Commit 5a13f456 by Jan Voung

Add ss/sd suffix to InstX8632Store and legalize FP constants.

InstX8632Store is essentially a "mov" and it would emit a mov, but it did not add the ss/sd suffix based on the operand type. Also, there are some cases where legalization would leave two memory operands in the case that one of them is a floating point immediate: storeDoubleConst: .LstoreDoubleConst$entry: mov eax, dword ptr [esp+4] mov qword ptr [eax], qword ptr [L$double$1] ret BUG=none R=stichnot@chromium.org, wala@chromium.org Review URL: https://codereview.chromium.org/341683002
parent 43ff7ebe
...@@ -544,7 +544,8 @@ void InstX8632Test::dump(const Cfg *Func) const { ...@@ -544,7 +544,8 @@ void InstX8632Test::dump(const Cfg *Func) const {
void InstX8632Store::emit(const Cfg *Func) const { void InstX8632Store::emit(const Cfg *Func) const {
Ostream &Str = Func->getContext()->getStrEmit(); Ostream &Str = Func->getContext()->getStrEmit();
assert(getSrcSize() == 2); assert(getSrcSize() == 2);
Str << "\tmov\t"; Str << "\tmov" << TypeX8632Attributes[getSrc(0)->getType()].SdSsString
<< "\t";
getSrc(1)->emit(Func); getSrc(1)->emit(Func);
Str << ", "; Str << ", ";
getSrc(0)->emit(Func); getSrc(0)->emit(Func);
......
...@@ -2174,7 +2174,11 @@ Operand *TargetX8632::legalize(Operand *From, LegalMask Allowed, ...@@ -2174,7 +2174,11 @@ Operand *TargetX8632::legalize(Operand *From, LegalMask Allowed,
// need to go in uninitialized registers. // need to go in uninitialized registers.
From = Ctx->getConstantZero(From->getType()); From = Ctx->getConstantZero(From->getType());
} }
if (!(Allowed & Legal_Imm)) { bool NeedsReg = !(Allowed & Legal_Imm) ||
// ConstantFloat and ConstantDouble are actually memory operands.
(!(Allowed & Legal_Mem) && (From->getType() == IceType_f32 ||
From->getType() == IceType_f64));
if (NeedsReg) {
Variable *Reg = makeReg(From->getType(), RegNum); Variable *Reg = makeReg(From->getType(), RegNum);
_mov(Reg, From); _mov(Reg, From);
From = Reg; From = Reg;
......
...@@ -19,7 +19,7 @@ define internal i32 @doubleArgs(double %a, i32 %b, double %c) { ...@@ -19,7 +19,7 @@ define internal i32 @doubleArgs(double %a, i32 %b, double %c) {
entry: entry:
ret i32 %b ret i32 %b
} }
; CHECK: doubleArgs: ; CHECK-LABEL: doubleArgs
; CHECK: mov eax, dword ptr [esp+12] ; CHECK: mov eax, dword ptr [esp+12]
; CHECK-NEXT: ret ; CHECK-NEXT: ret
...@@ -27,7 +27,7 @@ define internal i32 @floatArgs(float %a, i32 %b, float %c) { ...@@ -27,7 +27,7 @@ define internal i32 @floatArgs(float %a, i32 %b, float %c) {
entry: entry:
ret i32 %b ret i32 %b
} }
; CHECK: floatArgs: ; CHECK-LABEL: floatArgs
; CHECK: mov eax, dword ptr [esp+8] ; CHECK: mov eax, dword ptr [esp+8]
; CHECK-NEXT: ret ; CHECK-NEXT: ret
...@@ -40,7 +40,7 @@ entry: ...@@ -40,7 +40,7 @@ entry:
%add3 = add i32 %add, %call2 %add3 = add i32 %add, %call2
ret i32 %add3 ret i32 %add3
} }
; CHECK: passFpArgs: ; CHECK-LABEL: passFpArgs
; CHECK: push 123 ; CHECK: push 123
; CHECK: call ignoreFpArgsNoInline ; CHECK: call ignoreFpArgsNoInline
; CHECK: push 123 ; CHECK: push 123
...@@ -55,7 +55,7 @@ entry: ...@@ -55,7 +55,7 @@ entry:
%call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00) %call = call i32 @ignoreFpArgsNoInline(float %a, i32 123, double 2.340000e+00)
ret i32 %call ret i32 %call
} }
; CHECK: passFpConstArg: ; CHECK-LABEL: passFpConstArg
; CHECK: push 123 ; CHECK: push 123
; CHECK: call ignoreFpArgsNoInline ; CHECK: call ignoreFpArgsNoInline
...@@ -64,7 +64,7 @@ entry: ...@@ -64,7 +64,7 @@ entry:
%call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0) %call = call i32 @ignoreFp32ArgsNoInline(float %a, i32 123, float 2.0)
ret i32 %call ret i32 %call
} }
; CHECK: passFp32ConstArg: ; CHECK-LABEL: passFp32ConstArg
; CHECK: push dword ; CHECK: push dword
; CHECK: push 123 ; CHECK: push 123
; CHECK: call ignoreFp32ArgsNoInline ; CHECK: call ignoreFp32ArgsNoInline
...@@ -75,28 +75,28 @@ define internal float @returnFloatArg(float %a) { ...@@ -75,28 +75,28 @@ define internal float @returnFloatArg(float %a) {
entry: entry:
ret float %a ret float %a
} }
; CHECK: returnFloatArg: ; CHECK-LABEL: returnFloatArg
; CHECK: fld dword ptr [esp ; CHECK: fld dword ptr [esp
define internal double @returnDoubleArg(double %a) { define internal double @returnDoubleArg(double %a) {
entry: entry:
ret double %a ret double %a
} }
; CHECK: returnDoubleArg: ; CHECK-LABEL: returnDoubleArg
; CHECK: fld qword ptr [esp ; CHECK: fld qword ptr [esp
define internal float @returnFloatConst() { define internal float @returnFloatConst() {
entry: entry:
ret float 0x3FF3AE1480000000 ret float 0x3FF3AE1480000000
} }
; CHECK: returnFloatConst: ; CHECK-LABEL: returnFloatConst
; CHECK: fld ; CHECK: fld
define internal double @returnDoubleConst() { define internal double @returnDoubleConst() {
entry: entry:
ret double 1.230000e+00 ret double 1.230000e+00
} }
; CHECK: returnDoubleConst: ; CHECK-LABEL: returnDoubleConst
; CHECK: fld ; CHECK: fld
define internal float @addFloat(float %a, float %b) { define internal float @addFloat(float %a, float %b) {
...@@ -104,7 +104,7 @@ entry: ...@@ -104,7 +104,7 @@ entry:
%add = fadd float %a, %b %add = fadd float %a, %b
ret float %add ret float %add
} }
; CHECK: addFloat: ; CHECK-LABEL: addFloat
; CHECK: addss ; CHECK: addss
; CHECK: fld ; CHECK: fld
...@@ -113,7 +113,7 @@ entry: ...@@ -113,7 +113,7 @@ entry:
%add = fadd double %a, %b %add = fadd double %a, %b
ret double %add ret double %add
} }
; CHECK: addDouble: ; CHECK-LABEL: addDouble
; CHECK: addsd ; CHECK: addsd
; CHECK: fld ; CHECK: fld
...@@ -122,7 +122,7 @@ entry: ...@@ -122,7 +122,7 @@ entry:
%sub = fsub float %a, %b %sub = fsub float %a, %b
ret float %sub ret float %sub
} }
; CHECK: subFloat: ; CHECK-LABEL: subFloat
; CHECK: subss ; CHECK: subss
; CHECK: fld ; CHECK: fld
...@@ -131,7 +131,7 @@ entry: ...@@ -131,7 +131,7 @@ entry:
%sub = fsub double %a, %b %sub = fsub double %a, %b
ret double %sub ret double %sub
} }
; CHECK: subDouble: ; CHECK-LABEL: subDouble
; CHECK: subsd ; CHECK: subsd
; CHECK: fld ; CHECK: fld
...@@ -140,7 +140,7 @@ entry: ...@@ -140,7 +140,7 @@ entry:
%mul = fmul float %a, %b %mul = fmul float %a, %b
ret float %mul ret float %mul
} }
; CHECK: mulFloat: ; CHECK-LABEL: mulFloat
; CHECK: mulss ; CHECK: mulss
; CHECK: fld ; CHECK: fld
...@@ -149,7 +149,7 @@ entry: ...@@ -149,7 +149,7 @@ entry:
%mul = fmul double %a, %b %mul = fmul double %a, %b
ret double %mul ret double %mul
} }
; CHECK: mulDouble: ; CHECK-LABEL: mulDouble
; CHECK: mulsd ; CHECK: mulsd
; CHECK: fld ; CHECK: fld
...@@ -158,7 +158,7 @@ entry: ...@@ -158,7 +158,7 @@ entry:
%div = fdiv float %a, %b %div = fdiv float %a, %b
ret float %div ret float %div
} }
; CHECK: divFloat: ; CHECK-LABEL: divFloat
; CHECK: divss ; CHECK: divss
; CHECK: fld ; CHECK: fld
...@@ -167,7 +167,7 @@ entry: ...@@ -167,7 +167,7 @@ entry:
%div = fdiv double %a, %b %div = fdiv double %a, %b
ret double %div ret double %div
} }
; CHECK: divDouble: ; CHECK-LABEL: divDouble
; CHECK: divsd ; CHECK: divsd
; CHECK: fld ; CHECK: fld
...@@ -176,7 +176,7 @@ entry: ...@@ -176,7 +176,7 @@ entry:
%div = frem float %a, %b %div = frem float %a, %b
ret float %div ret float %div
} }
; CHECK: remFloat: ; CHECK-LABEL: remFloat
; CHECK: call fmodf ; CHECK: call fmodf
define internal double @remDouble(double %a, double %b) { define internal double @remDouble(double %a, double %b) {
...@@ -184,7 +184,7 @@ entry: ...@@ -184,7 +184,7 @@ entry:
%div = frem double %a, %b %div = frem double %a, %b
ret double %div ret double %div
} }
; CHECK: remDouble: ; CHECK-LABEL: remDouble
; CHECK: call fmod ; CHECK: call fmod
define internal float @fptrunc(double %a) { define internal float @fptrunc(double %a) {
...@@ -192,7 +192,7 @@ entry: ...@@ -192,7 +192,7 @@ entry:
%conv = fptrunc double %a to float %conv = fptrunc double %a to float
ret float %conv ret float %conv
} }
; CHECK: fptrunc: ; CHECK-LABEL: fptrunc
; CHECK: cvtsd2ss ; CHECK: cvtsd2ss
; CHECK: fld ; CHECK: fld
...@@ -201,7 +201,7 @@ entry: ...@@ -201,7 +201,7 @@ entry:
%conv = fpext float %a to double %conv = fpext float %a to double
ret double %conv ret double %conv
} }
; CHECK: fpext: ; CHECK-LABEL: fpext
; CHECK: cvtss2sd ; CHECK: cvtss2sd
; CHECK: fld ; CHECK: fld
...@@ -210,7 +210,7 @@ entry: ...@@ -210,7 +210,7 @@ entry:
%conv = fptosi double %a to i64 %conv = fptosi double %a to i64
ret i64 %conv ret i64 %conv
} }
; CHECK: doubleToSigned64: ; CHECK-LABEL: doubleToSigned64
; CHECK: call cvtdtosi64 ; CHECK: call cvtdtosi64
define internal i64 @floatToSigned64(float %a) { define internal i64 @floatToSigned64(float %a) {
...@@ -218,7 +218,7 @@ entry: ...@@ -218,7 +218,7 @@ entry:
%conv = fptosi float %a to i64 %conv = fptosi float %a to i64
ret i64 %conv ret i64 %conv
} }
; CHECK: floatToSigned64: ; CHECK-LABEL: floatToSigned64
; CHECK: call cvtftosi64 ; CHECK: call cvtftosi64
define internal i64 @doubleToUnsigned64(double %a) { define internal i64 @doubleToUnsigned64(double %a) {
...@@ -226,7 +226,7 @@ entry: ...@@ -226,7 +226,7 @@ entry:
%conv = fptoui double %a to i64 %conv = fptoui double %a to i64
ret i64 %conv ret i64 %conv
} }
; CHECK: doubleToUnsigned64: ; CHECK-LABEL: doubleToUnsigned64
; CHECK: call cvtdtoui64 ; CHECK: call cvtdtoui64
define internal i64 @floatToUnsigned64(float %a) { define internal i64 @floatToUnsigned64(float %a) {
...@@ -234,7 +234,7 @@ entry: ...@@ -234,7 +234,7 @@ entry:
%conv = fptoui float %a to i64 %conv = fptoui float %a to i64
ret i64 %conv ret i64 %conv
} }
; CHECK: floatToUnsigned64: ; CHECK-LABEL: floatToUnsigned64
; CHECK: call cvtftoui64 ; CHECK: call cvtftoui64
define internal i32 @doubleToSigned32(double %a) { define internal i32 @doubleToSigned32(double %a) {
...@@ -242,7 +242,7 @@ entry: ...@@ -242,7 +242,7 @@ entry:
%conv = fptosi double %a to i32 %conv = fptosi double %a to i32
ret i32 %conv ret i32 %conv
} }
; CHECK: doubleToSigned32: ; CHECK-LABEL: doubleToSigned32
; CHECK: cvtsd2si ; CHECK: cvtsd2si
define internal i32 @floatToSigned32(float %a) { define internal i32 @floatToSigned32(float %a) {
...@@ -250,7 +250,7 @@ entry: ...@@ -250,7 +250,7 @@ entry:
%conv = fptosi float %a to i32 %conv = fptosi float %a to i32
ret i32 %conv ret i32 %conv
} }
; CHECK: floatToSigned32: ; CHECK-LABEL: floatToSigned32
; CHECK: cvtss2si ; CHECK: cvtss2si
define internal i32 @doubleToUnsigned32(double %a) { define internal i32 @doubleToUnsigned32(double %a) {
...@@ -258,7 +258,7 @@ entry: ...@@ -258,7 +258,7 @@ entry:
%conv = fptoui double %a to i32 %conv = fptoui double %a to i32
ret i32 %conv ret i32 %conv
} }
; CHECK: doubleToUnsigned32: ; CHECK-LABEL: doubleToUnsigned32
; CHECK: call cvtdtoui32 ; CHECK: call cvtdtoui32
define internal i32 @floatToUnsigned32(float %a) { define internal i32 @floatToUnsigned32(float %a) {
...@@ -266,7 +266,7 @@ entry: ...@@ -266,7 +266,7 @@ entry:
%conv = fptoui float %a to i32 %conv = fptoui float %a to i32
ret i32 %conv ret i32 %conv
} }
; CHECK: floatToUnsigned32: ; CHECK-LABEL: floatToUnsigned32
; CHECK: call cvtftoui32 ; CHECK: call cvtftoui32
define internal i32 @doubleToSigned16(double %a) { define internal i32 @doubleToSigned16(double %a) {
...@@ -275,7 +275,7 @@ entry: ...@@ -275,7 +275,7 @@ entry:
%conv.ret_ext = sext i16 %conv to i32 %conv.ret_ext = sext i16 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: doubleToSigned16: ; CHECK-LABEL: doubleToSigned16
; CHECK: cvtsd2si ; CHECK: cvtsd2si
; CHECK: movsx ; CHECK: movsx
...@@ -285,7 +285,7 @@ entry: ...@@ -285,7 +285,7 @@ entry:
%conv.ret_ext = sext i16 %conv to i32 %conv.ret_ext = sext i16 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: floatToSigned16: ; CHECK-LABEL: floatToSigned16
; CHECK: cvtss2si ; CHECK: cvtss2si
; CHECK: movsx ; CHECK: movsx
...@@ -295,7 +295,7 @@ entry: ...@@ -295,7 +295,7 @@ entry:
%conv.ret_ext = zext i16 %conv to i32 %conv.ret_ext = zext i16 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: doubleToUnsigned16: ; CHECK-LABEL: doubleToUnsigned16
; CHECK: cvtsd2si ; CHECK: cvtsd2si
; CHECK: movzx ; CHECK: movzx
...@@ -305,7 +305,7 @@ entry: ...@@ -305,7 +305,7 @@ entry:
%conv.ret_ext = zext i16 %conv to i32 %conv.ret_ext = zext i16 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: floatToUnsigned16: ; CHECK-LABEL: floatToUnsigned16
; CHECK: cvtss2si ; CHECK: cvtss2si
; CHECK: movzx ; CHECK: movzx
...@@ -315,7 +315,7 @@ entry: ...@@ -315,7 +315,7 @@ entry:
%conv.ret_ext = sext i8 %conv to i32 %conv.ret_ext = sext i8 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: doubleToSigned8: ; CHECK-LABEL: doubleToSigned8
; CHECK: cvtsd2si ; CHECK: cvtsd2si
; CHECK: movsx ; CHECK: movsx
...@@ -325,7 +325,7 @@ entry: ...@@ -325,7 +325,7 @@ entry:
%conv.ret_ext = sext i8 %conv to i32 %conv.ret_ext = sext i8 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: floatToSigned8: ; CHECK-LABEL: floatToSigned8
; CHECK: cvtss2si ; CHECK: cvtss2si
; CHECK: movsx ; CHECK: movsx
...@@ -335,7 +335,7 @@ entry: ...@@ -335,7 +335,7 @@ entry:
%conv.ret_ext = zext i8 %conv to i32 %conv.ret_ext = zext i8 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: doubleToUnsigned8: ; CHECK-LABEL: doubleToUnsigned8
; CHECK: cvtsd2si ; CHECK: cvtsd2si
; CHECK: movzx ; CHECK: movzx
...@@ -345,7 +345,7 @@ entry: ...@@ -345,7 +345,7 @@ entry:
%conv.ret_ext = zext i8 %conv to i32 %conv.ret_ext = zext i8 %conv to i32
ret i32 %conv.ret_ext ret i32 %conv.ret_ext
} }
; CHECK: floatToUnsigned8: ; CHECK-LABEL: floatToUnsigned8
; CHECK: cvtss2si ; CHECK: cvtss2si
; CHECK: movzx ; CHECK: movzx
...@@ -355,7 +355,7 @@ entry: ...@@ -355,7 +355,7 @@ entry:
%tobool.ret_ext = zext i1 %tobool to i32 %tobool.ret_ext = zext i1 %tobool to i32
ret i32 %tobool.ret_ext ret i32 %tobool.ret_ext
} }
; CHECK: doubleToUnsigned1: ; CHECK-LABEL: doubleToUnsigned1
; CHECK: cvtsd2si ; CHECK: cvtsd2si
; CHECK: and eax, 1 ; CHECK: and eax, 1
...@@ -365,7 +365,7 @@ entry: ...@@ -365,7 +365,7 @@ entry:
%tobool.ret_ext = zext i1 %tobool to i32 %tobool.ret_ext = zext i1 %tobool to i32
ret i32 %tobool.ret_ext ret i32 %tobool.ret_ext
} }
; CHECK: floatToUnsigned1: ; CHECK-LABEL: floatToUnsigned1
; CHECK: cvtss2si ; CHECK: cvtss2si
; CHECK: and eax, 1 ; CHECK: and eax, 1
...@@ -374,7 +374,7 @@ entry: ...@@ -374,7 +374,7 @@ entry:
%conv = sitofp i64 %a to double %conv = sitofp i64 %a to double
ret double %conv ret double %conv
} }
; CHECK: signed64ToDouble: ; CHECK-LABEL: signed64ToDouble
; CHECK: call cvtsi64tod ; CHECK: call cvtsi64tod
; CHECK: fstp ; CHECK: fstp
...@@ -383,7 +383,7 @@ entry: ...@@ -383,7 +383,7 @@ entry:
%conv = sitofp i64 %a to float %conv = sitofp i64 %a to float
ret float %conv ret float %conv
} }
; CHECK: signed64ToFloat: ; CHECK-LABEL: signed64ToFloat
; CHECK: call cvtsi64tof ; CHECK: call cvtsi64tof
; CHECK: fstp ; CHECK: fstp
...@@ -392,7 +392,7 @@ entry: ...@@ -392,7 +392,7 @@ entry:
%conv = uitofp i64 %a to double %conv = uitofp i64 %a to double
ret double %conv ret double %conv
} }
; CHECK: unsigned64ToDouble: ; CHECK-LABEL: unsigned64ToDouble
; CHECK: call cvtui64tod ; CHECK: call cvtui64tod
; CHECK: fstp ; CHECK: fstp
...@@ -401,7 +401,7 @@ entry: ...@@ -401,7 +401,7 @@ entry:
%conv = uitofp i64 %a to float %conv = uitofp i64 %a to float
ret float %conv ret float %conv
} }
; CHECK: unsigned64ToFloat: ; CHECK-LABEL: unsigned64ToFloat
; CHECK: call cvtui64tof ; CHECK: call cvtui64tof
; CHECK: fstp ; CHECK: fstp
...@@ -410,7 +410,7 @@ entry: ...@@ -410,7 +410,7 @@ entry:
%conv = sitofp i32 %a to double %conv = sitofp i32 %a to double
ret double %conv ret double %conv
} }
; CHECK: signed32ToDouble: ; CHECK-LABEL: signed32ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -419,7 +419,7 @@ entry: ...@@ -419,7 +419,7 @@ entry:
%conv = sitofp i32 %a to float %conv = sitofp i32 %a to float
ret float %conv ret float %conv
} }
; CHECK: signed32ToFloat: ; CHECK-LABEL: signed32ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -428,7 +428,7 @@ entry: ...@@ -428,7 +428,7 @@ entry:
%conv = uitofp i32 %a to double %conv = uitofp i32 %a to double
ret double %conv ret double %conv
} }
; CHECK: unsigned32ToDouble: ; CHECK-LABEL: unsigned32ToDouble
; CHECK: call cvtui32tod ; CHECK: call cvtui32tod
; CHECK: fstp ; CHECK: fstp
...@@ -437,7 +437,7 @@ entry: ...@@ -437,7 +437,7 @@ entry:
%conv = uitofp i32 %a to float %conv = uitofp i32 %a to float
ret float %conv ret float %conv
} }
; CHECK: unsigned32ToFloat: ; CHECK-LABEL: unsigned32ToFloat
; CHECK: call cvtui32tof ; CHECK: call cvtui32tof
; CHECK: fstp ; CHECK: fstp
...@@ -447,7 +447,7 @@ entry: ...@@ -447,7 +447,7 @@ entry:
%conv = sitofp i16 %a.arg_trunc to double %conv = sitofp i16 %a.arg_trunc to double
ret double %conv ret double %conv
} }
; CHECK: signed16ToDouble: ; CHECK-LABEL: signed16ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -457,7 +457,7 @@ entry: ...@@ -457,7 +457,7 @@ entry:
%conv = sitofp i16 %a.arg_trunc to float %conv = sitofp i16 %a.arg_trunc to float
ret float %conv ret float %conv
} }
; CHECK: signed16ToFloat: ; CHECK-LABEL: signed16ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -467,7 +467,7 @@ entry: ...@@ -467,7 +467,7 @@ entry:
%conv = uitofp i16 %a.arg_trunc to double %conv = uitofp i16 %a.arg_trunc to double
ret double %conv ret double %conv
} }
; CHECK: unsigned16ToDouble: ; CHECK-LABEL: unsigned16ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -477,7 +477,7 @@ entry: ...@@ -477,7 +477,7 @@ entry:
%conv = uitofp i16 %a.arg_trunc to float %conv = uitofp i16 %a.arg_trunc to float
ret float %conv ret float %conv
} }
; CHECK: unsigned16ToFloat: ; CHECK-LABEL: unsigned16ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -487,7 +487,7 @@ entry: ...@@ -487,7 +487,7 @@ entry:
%conv = sitofp i8 %a.arg_trunc to double %conv = sitofp i8 %a.arg_trunc to double
ret double %conv ret double %conv
} }
; CHECK: signed8ToDouble: ; CHECK-LABEL: signed8ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -497,7 +497,7 @@ entry: ...@@ -497,7 +497,7 @@ entry:
%conv = sitofp i8 %a.arg_trunc to float %conv = sitofp i8 %a.arg_trunc to float
ret float %conv ret float %conv
} }
; CHECK: signed8ToFloat: ; CHECK-LABEL: signed8ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -507,7 +507,7 @@ entry: ...@@ -507,7 +507,7 @@ entry:
%conv = uitofp i8 %a.arg_trunc to double %conv = uitofp i8 %a.arg_trunc to double
ret double %conv ret double %conv
} }
; CHECK: unsigned8ToDouble: ; CHECK-LABEL: unsigned8ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -517,7 +517,7 @@ entry: ...@@ -517,7 +517,7 @@ entry:
%conv = uitofp i8 %a.arg_trunc to float %conv = uitofp i8 %a.arg_trunc to float
ret float %conv ret float %conv
} }
; CHECK: unsigned8ToFloat: ; CHECK-LABEL: unsigned8ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -527,7 +527,7 @@ entry: ...@@ -527,7 +527,7 @@ entry:
%conv = uitofp i1 %a.arg_trunc to double %conv = uitofp i1 %a.arg_trunc to double
ret double %conv ret double %conv
} }
; CHECK: unsigned1ToDouble: ; CHECK-LABEL: unsigned1ToDouble
; CHECK: cvtsi2sd ; CHECK: cvtsi2sd
; CHECK: fld ; CHECK: fld
...@@ -537,7 +537,7 @@ entry: ...@@ -537,7 +537,7 @@ entry:
%conv = uitofp i1 %a.arg_trunc to float %conv = uitofp i1 %a.arg_trunc to float
ret float %conv ret float %conv
} }
; CHECK: unsigned1ToFloat: ; CHECK-LABEL: unsigned1ToFloat
; CHECK: cvtsi2ss ; CHECK: cvtsi2ss
; CHECK: fld ; CHECK: fld
...@@ -561,7 +561,7 @@ if.then2: ; preds = %if.end ...@@ -561,7 +561,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.then2, %if.end if.end3: ; preds = %if.then2, %if.end
ret void ret void
} }
; CHECK: fcmpEq: ; CHECK-LABEL: fcmpEq
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jne . ; CHECK: jne .
; CHECK-NEXT: jp . ; CHECK-NEXT: jp .
...@@ -593,7 +593,7 @@ if.then2: ; preds = %if.end ...@@ -593,7 +593,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.then2, %if.end if.end3: ; preds = %if.then2, %if.end
ret void ret void
} }
; CHECK: fcmpNe: ; CHECK-LABEL: fcmpNe
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jne . ; CHECK: jne .
; CHECK-NEXT: jp . ; CHECK-NEXT: jp .
...@@ -623,7 +623,7 @@ if.then2: ; preds = %if.end ...@@ -623,7 +623,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.then2, %if.end if.end3: ; preds = %if.then2, %if.end
ret void ret void
} }
; CHECK: fcmpGt: ; CHECK-LABEL: fcmpGt
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: ja . ; CHECK: ja .
; CHECK: call func ; CHECK: call func
...@@ -651,7 +651,7 @@ if.then2: ; preds = %if.end ...@@ -651,7 +651,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.end, %if.then2 if.end3: ; preds = %if.end, %if.then2
ret void ret void
} }
; CHECK: fcmpGe: ; CHECK-LABEL: fcmpGe
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jb . ; CHECK: jb .
; CHECK: call func ; CHECK: call func
...@@ -679,7 +679,7 @@ if.then2: ; preds = %if.end ...@@ -679,7 +679,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.then2, %if.end if.end3: ; preds = %if.then2, %if.end
ret void ret void
} }
; CHECK: fcmpLt: ; CHECK-LABEL: fcmpLt
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: ja . ; CHECK: ja .
; CHECK: call func ; CHECK: call func
...@@ -707,7 +707,7 @@ if.then2: ; preds = %if.end ...@@ -707,7 +707,7 @@ if.then2: ; preds = %if.end
if.end3: ; preds = %if.end, %if.then2 if.end3: ; preds = %if.end, %if.then2
ret void ret void
} }
; CHECK: fcmpLe: ; CHECK-LABEL: fcmpLe
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jb . ; CHECK: jb .
; CHECK: call func ; CHECK: call func
...@@ -721,7 +721,7 @@ entry: ...@@ -721,7 +721,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpFalseFloat: ; CHECK-LABEL: fcmpFalseFloat
; CHECK: mov {{.*}}, 0 ; CHECK: mov {{.*}}, 0
define internal i32 @fcmpFalseDouble(double %a, double %b) { define internal i32 @fcmpFalseDouble(double %a, double %b) {
...@@ -730,7 +730,7 @@ entry: ...@@ -730,7 +730,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpFalseDouble: ; CHECK-LABEL: fcmpFalseDouble
; CHECK: mov {{.*}}, 0 ; CHECK: mov {{.*}}, 0
define internal i32 @fcmpOeqFloat(float %a, float %b) { define internal i32 @fcmpOeqFloat(float %a, float %b) {
...@@ -739,7 +739,7 @@ entry: ...@@ -739,7 +739,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOeqFloat: ; CHECK-LABEL: fcmpOeqFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jne . ; CHECK: jne .
; CHECK: jp . ; CHECK: jp .
...@@ -750,7 +750,7 @@ entry: ...@@ -750,7 +750,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOeqDouble: ; CHECK-LABEL: fcmpOeqDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jne . ; CHECK: jne .
; CHECK: jp . ; CHECK: jp .
...@@ -761,7 +761,7 @@ entry: ...@@ -761,7 +761,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOgtFloat: ; CHECK-LABEL: fcmpOgtFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: ja . ; CHECK: ja .
...@@ -771,7 +771,7 @@ entry: ...@@ -771,7 +771,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOgtDouble: ; CHECK-LABEL: fcmpOgtDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: ja . ; CHECK: ja .
...@@ -781,7 +781,7 @@ entry: ...@@ -781,7 +781,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOgeFloat: ; CHECK-LABEL: fcmpOgeFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jae . ; CHECK: jae .
...@@ -791,7 +791,7 @@ entry: ...@@ -791,7 +791,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOgeDouble: ; CHECK-LABEL: fcmpOgeDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jae . ; CHECK: jae .
...@@ -801,7 +801,7 @@ entry: ...@@ -801,7 +801,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOltFloat: ; CHECK-LABEL: fcmpOltFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: ja . ; CHECK: ja .
...@@ -811,7 +811,7 @@ entry: ...@@ -811,7 +811,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOltDouble: ; CHECK-LABEL: fcmpOltDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: ja . ; CHECK: ja .
...@@ -821,7 +821,7 @@ entry: ...@@ -821,7 +821,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOleFloat: ; CHECK-LABEL: fcmpOleFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jae . ; CHECK: jae .
...@@ -831,7 +831,7 @@ entry: ...@@ -831,7 +831,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOleDouble: ; CHECK-LABEL: fcmpOleDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jae . ; CHECK: jae .
...@@ -841,7 +841,7 @@ entry: ...@@ -841,7 +841,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOneFloat: ; CHECK-LABEL: fcmpOneFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jne . ; CHECK: jne .
...@@ -851,7 +851,7 @@ entry: ...@@ -851,7 +851,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOneDouble: ; CHECK-LABEL: fcmpOneDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jne . ; CHECK: jne .
...@@ -861,7 +861,7 @@ entry: ...@@ -861,7 +861,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOrdFloat: ; CHECK-LABEL: fcmpOrdFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jnp . ; CHECK: jnp .
...@@ -871,7 +871,7 @@ entry: ...@@ -871,7 +871,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpOrdDouble: ; CHECK-LABEL: fcmpOrdDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jnp . ; CHECK: jnp .
...@@ -881,7 +881,7 @@ entry: ...@@ -881,7 +881,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUeqFloat: ; CHECK-LABEL: fcmpUeqFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: je . ; CHECK: je .
...@@ -891,7 +891,7 @@ entry: ...@@ -891,7 +891,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUeqDouble: ; CHECK-LABEL: fcmpUeqDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: je . ; CHECK: je .
...@@ -901,7 +901,7 @@ entry: ...@@ -901,7 +901,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUgtFloat: ; CHECK-LABEL: fcmpUgtFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jb . ; CHECK: jb .
...@@ -911,7 +911,7 @@ entry: ...@@ -911,7 +911,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUgtDouble: ; CHECK-LABEL: fcmpUgtDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jb . ; CHECK: jb .
...@@ -921,7 +921,7 @@ entry: ...@@ -921,7 +921,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUgeFloat: ; CHECK-LABEL: fcmpUgeFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jbe . ; CHECK: jbe .
...@@ -931,7 +931,7 @@ entry: ...@@ -931,7 +931,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUgeDouble: ; CHECK-LABEL: fcmpUgeDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jbe . ; CHECK: jbe .
...@@ -941,7 +941,7 @@ entry: ...@@ -941,7 +941,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUltFloat: ; CHECK-LABEL: fcmpUltFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jb . ; CHECK: jb .
...@@ -951,7 +951,7 @@ entry: ...@@ -951,7 +951,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUltDouble: ; CHECK-LABEL: fcmpUltDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jb . ; CHECK: jb .
...@@ -961,7 +961,7 @@ entry: ...@@ -961,7 +961,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUleFloat: ; CHECK-LABEL: fcmpUleFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jbe . ; CHECK: jbe .
...@@ -971,7 +971,7 @@ entry: ...@@ -971,7 +971,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUleDouble: ; CHECK-LABEL: fcmpUleDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jbe . ; CHECK: jbe .
...@@ -981,7 +981,7 @@ entry: ...@@ -981,7 +981,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUneFloat: ; CHECK-LABEL: fcmpUneFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jne . ; CHECK: jne .
; CHECK: jp . ; CHECK: jp .
...@@ -992,7 +992,7 @@ entry: ...@@ -992,7 +992,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUneDouble: ; CHECK-LABEL: fcmpUneDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jne . ; CHECK: jne .
; CHECK: jp . ; CHECK: jp .
...@@ -1003,7 +1003,7 @@ entry: ...@@ -1003,7 +1003,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUnoFloat: ; CHECK-LABEL: fcmpUnoFloat
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: jp . ; CHECK: jp .
...@@ -1013,7 +1013,7 @@ entry: ...@@ -1013,7 +1013,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpUnoDouble: ; CHECK-LABEL: fcmpUnoDouble
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: jp . ; CHECK: jp .
...@@ -1023,7 +1023,7 @@ entry: ...@@ -1023,7 +1023,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpTrueFloat: ; CHECK-LABEL: fcmpTrueFloat
; CHECK: mov {{.*}}, 1 ; CHECK: mov {{.*}}, 1
define internal i32 @fcmpTrueDouble(double %a, double %b) { define internal i32 @fcmpTrueDouble(double %a, double %b) {
...@@ -1032,7 +1032,7 @@ entry: ...@@ -1032,7 +1032,7 @@ entry:
%cmp.ret_ext = zext i1 %cmp to i32 %cmp.ret_ext = zext i1 %cmp to i32
ret i32 %cmp.ret_ext ret i32 %cmp.ret_ext
} }
; CHECK: fcmpTrueDouble: ; CHECK-LABEL: fcmpTrueDouble
; CHECK: mov {{.*}}, 1 ; CHECK: mov {{.*}}, 1
define internal float @loadFloat(i32 %a) { define internal float @loadFloat(i32 %a) {
...@@ -1041,7 +1041,7 @@ entry: ...@@ -1041,7 +1041,7 @@ entry:
%v0 = load float* %__1, align 4 %v0 = load float* %__1, align 4
ret float %v0 ret float %v0
} }
; CHECK: loadFloat: ; CHECK-LABEL: loadFloat
; CHECK: movss ; CHECK: movss
; CHECK: fld ; CHECK: fld
...@@ -1051,7 +1051,7 @@ entry: ...@@ -1051,7 +1051,7 @@ entry:
%v0 = load double* %__1, align 8 %v0 = load double* %__1, align 8
ret double %v0 ret double %v0
} }
; CHECK: loadDouble: ; CHECK-LABEL: loadDouble
; CHECK: movsd ; CHECK: movsd
; CHECK: fld ; CHECK: fld
...@@ -1061,7 +1061,8 @@ entry: ...@@ -1061,7 +1061,8 @@ entry:
store float %value, float* %__2, align 4 store float %value, float* %__2, align 4
ret void ret void
} }
; CHECK: storeFloat: ; CHECK-LABEL: storeFloat:
; CHECK: movss
; CHECK: movss ; CHECK: movss
define internal void @storeDouble(i32 %a, double %value) { define internal void @storeDouble(i32 %a, double %value) {
...@@ -1070,7 +1071,8 @@ entry: ...@@ -1070,7 +1071,8 @@ entry:
store double %value, double* %__2, align 8 store double %value, double* %__2, align 8
ret void ret void
} }
; CHECK: storeDouble: ; CHECK-LABEL: storeDouble:
; CHECK: movsd
; CHECK: movsd ; CHECK: movsd
define internal void @storeFloatConst(i32 %a) { define internal void @storeFloatConst(i32 %a) {
...@@ -1079,9 +1081,9 @@ entry: ...@@ -1079,9 +1081,9 @@ entry:
store float 0x3FF3AE1480000000, float* %a.asptr, align 4 store float 0x3FF3AE1480000000, float* %a.asptr, align 4
ret void ret void
} }
; CHECK: storeFloatConst: ; CHECK-LABEL: storeFloatConst
; CHECK: mov ; CHECK: movss
; CHECK: mov ; CHECK: movss
define internal void @storeDoubleConst(i32 %a) { define internal void @storeDoubleConst(i32 %a) {
entry: entry:
...@@ -1089,9 +1091,9 @@ entry: ...@@ -1089,9 +1091,9 @@ entry:
store double 1.230000e+00, double* %a.asptr, align 8 store double 1.230000e+00, double* %a.asptr, align 8
ret void ret void
} }
; CHECK: storeDoubleConst: ; CHECK-LABEL: storeDoubleConst
; CHECK: mov ; CHECK: movsd
; CHECK: mov ; CHECK: movsd
define internal float @selectFloatVarVar(float %a, float %b) { define internal float @selectFloatVarVar(float %a, float %b) {
entry: entry:
...@@ -1099,7 +1101,7 @@ entry: ...@@ -1099,7 +1101,7 @@ entry:
%cond = select i1 %cmp, float %a, float %b %cond = select i1 %cmp, float %a, float %b
ret float %cond ret float %cond
} }
; CHECK: selectFloatVarVar: ; CHECK-LABEL: selectFloatVarVar
; CHECK: ucomiss ; CHECK: ucomiss
; CHECK: ja . ; CHECK: ja .
; CHECK: fld ; CHECK: fld
...@@ -1110,7 +1112,7 @@ entry: ...@@ -1110,7 +1112,7 @@ entry:
%cond = select i1 %cmp, double %a, double %b %cond = select i1 %cmp, double %a, double %b
ret double %cond ret double %cond
} }
; CHECK: selectDoubleVarVar: ; CHECK-LABEL: selectDoubleVarVar
; CHECK: ucomisd ; CHECK: ucomisd
; CHECK: ja . ; CHECK: ja .
; CHECK: fld ; CHECK: fld
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment