| Index: tests_lit/llvm2ice_tests/fp.pnacl.ll
|
| diff --git a/tests_lit/llvm2ice_tests/fp.pnacl.ll b/tests_lit/llvm2ice_tests/fp.pnacl.ll
|
| index 0987b7f6790ed5374b329adac5f37c60839a17d9..58a33f3e22d1b1c2fb744d847609e2dba6bd3f94 100644
|
| --- a/tests_lit/llvm2ice_tests/fp.pnacl.ll
|
| +++ b/tests_lit/llvm2ice_tests/fp.pnacl.ll
|
| @@ -3,12 +3,10 @@
|
| ; that should be present regardless of the optimization level, so
|
| ; there are no special OPTM1 match lines.
|
|
|
| -; RUN: %p2i -i %s --args -O2 --verbose none \
|
| -; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \
|
| -; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
|
| -; RUN: %p2i -i %s --args -Om1 --verbose none \
|
| -; RUN: | llvm-mc -triple=i686-none-nacl -filetype=obj \
|
| -; RUN: | llvm-objdump -d --symbolize -x86-asm-syntax=intel - | FileCheck %s
|
| +; RUN: %p2i --assemble --disassemble -i %s --args -O2 --verbose none \
|
| +; RUN: -ffunction-sections | FileCheck %s
|
| +; RUN: %p2i --assemble --disassemble -i %s --args -Om1 --verbose none \
|
| +; RUN: -ffunction-sections | FileCheck %s
|
|
|
| @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4
|
| @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4
|
| @@ -20,7 +18,7 @@ entry:
|
| ret i32 %b
|
| }
|
| ; CHECK-LABEL: doubleArgs
|
| -; CHECK: mov eax, dword ptr [esp + 12]
|
| +; CHECK: mov eax,DWORD PTR [esp+0xc]
|
| ; CHECK-NEXT: ret
|
|
|
| define internal i32 @floatArgs(float %a, i32 %b, float %c) {
|
| @@ -28,7 +26,7 @@ entry:
|
| ret i32 %b
|
| }
|
| ; CHECK-LABEL: floatArgs
|
| -; CHECK: mov eax, dword ptr [esp + 8]
|
| +; CHECK: mov eax,DWORD PTR [esp+0x8]
|
| ; CHECK-NEXT: ret
|
|
|
| define internal i32 @passFpArgs(float %a, double %b, float %c, double %d, float %e, double %f) {
|
| @@ -41,12 +39,15 @@ entry:
|
| ret i32 %add3
|
| }
|
| ; CHECK-LABEL: passFpArgs
|
| -; CHECK: mov dword ptr [esp + 4], 123
|
| -; CHECK: call ignoreFpArgsNoInline
|
| -; CHECK: mov dword ptr [esp + 4], 123
|
| -; CHECK: call ignoreFpArgsNoInline
|
| -; CHECK: mov dword ptr [esp + 4], 123
|
| -; CHECK: call ignoreFpArgsNoInline
|
| +; CHECK: mov DWORD PTR [esp+0x4],0x7b
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} ignoreFpArgsNoInline
|
| +; CHECK: mov DWORD PTR [esp+0x4],0x7b
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} ignoreFpArgsNoInline
|
| +; CHECK: mov DWORD PTR [esp+0x4],0x7b
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} ignoreFpArgsNoInline
|
|
|
| declare i32 @ignoreFpArgsNoInline(float %x, i32 %y, double %z)
|
|
|
| @@ -56,8 +57,9 @@ entry:
|
| ret i32 %call
|
| }
|
| ; CHECK-LABEL: passFpConstArg
|
| -; CHECK: mov dword ptr [esp + 4], 123
|
| -; CHECK: call ignoreFpArgsNoInline
|
| +; CHECK: mov DWORD PTR [esp+0x4],0x7b
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} ignoreFpArgsNoInline
|
|
|
| define internal i32 @passFp32ConstArg(float %a) {
|
| entry:
|
| @@ -65,9 +67,10 @@ entry:
|
| ret i32 %call
|
| }
|
| ; CHECK-LABEL: passFp32ConstArg
|
| -; CHECK: mov dword ptr [esp + 4], 123
|
| -; CHECK: movss dword ptr [esp + 8]
|
| -; CHECK: call ignoreFp32ArgsNoInline
|
| +; CHECK: mov DWORD PTR [esp+0x4],0x7b
|
| +; CHECK: movss DWORD PTR [esp+0x8]
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} ignoreFp32ArgsNoInline
|
|
|
| define i32 @ignoreFp32ArgsNoInline(float %x, i32 %y, float %z) {
|
| entry:
|
| @@ -79,14 +82,14 @@ entry:
|
| ret float %a
|
| }
|
| ; CHECK-LABEL: returnFloatArg
|
| -; CHECK: fld dword ptr [esp
|
| +; CHECK: fld DWORD PTR [esp
|
|
|
| define internal double @returnDoubleArg(double %a) {
|
| entry:
|
| ret double %a
|
| }
|
| ; CHECK-LABEL: returnDoubleArg
|
| -; CHECK: fld qword ptr [esp
|
| +; CHECK: fld QWORD PTR [esp
|
|
|
| define internal float @returnFloatConst() {
|
| entry:
|
| @@ -180,7 +183,8 @@ entry:
|
| ret float %div
|
| }
|
| ; CHECK-LABEL: remFloat
|
| -; CHECK: call fmodf
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} fmodf
|
|
|
| define internal double @remDouble(double %a, double %b) {
|
| entry:
|
| @@ -188,7 +192,8 @@ entry:
|
| ret double %div
|
| }
|
| ; CHECK-LABEL: remDouble
|
| -; CHECK: call fmod
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} fmod
|
|
|
| define internal float @fptrunc(double %a) {
|
| entry:
|
| @@ -214,7 +219,8 @@ entry:
|
| ret i64 %conv
|
| }
|
| ; CHECK-LABEL: doubleToSigned64
|
| -; CHECK: call cvtdtosi64
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtdtosi64
|
|
|
| define internal i64 @floatToSigned64(float %a) {
|
| entry:
|
| @@ -222,7 +228,8 @@ entry:
|
| ret i64 %conv
|
| }
|
| ; CHECK-LABEL: floatToSigned64
|
| -; CHECK: call cvtftosi64
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtftosi64
|
|
|
| define internal i64 @doubleToUnsigned64(double %a) {
|
| entry:
|
| @@ -230,7 +237,8 @@ entry:
|
| ret i64 %conv
|
| }
|
| ; CHECK-LABEL: doubleToUnsigned64
|
| -; CHECK: call cvtdtoui64
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtdtoui64
|
|
|
| define internal i64 @floatToUnsigned64(float %a) {
|
| entry:
|
| @@ -238,7 +246,8 @@ entry:
|
| ret i64 %conv
|
| }
|
| ; CHECK-LABEL: floatToUnsigned64
|
| -; CHECK: call cvtftoui64
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtftoui64
|
|
|
| define internal i32 @doubleToSigned32(double %a) {
|
| entry:
|
| @@ -270,7 +279,8 @@ entry:
|
| ret i32 %conv
|
| }
|
| ; CHECK-LABEL: doubleToUnsigned32
|
| -; CHECK: call cvtdtoui32
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtdtoui32
|
|
|
| define internal i32 @floatToUnsigned32(float %a) {
|
| entry:
|
| @@ -278,8 +288,8 @@ entry:
|
| ret i32 %conv
|
| }
|
| ; CHECK-LABEL: floatToUnsigned32
|
| -; CHECK: call cvtftoui32
|
| -
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtftoui32
|
|
|
| define internal i32 @doubleToSigned16(double %a) {
|
| entry:
|
| @@ -369,7 +379,7 @@ entry:
|
| }
|
| ; CHECK-LABEL: doubleToUnsigned1
|
| ; CHECK: cvttsd2si
|
| -; CHECK: and eax, 1
|
| +; CHECK: and eax,0x1
|
|
|
| define internal i32 @floatToUnsigned1(float %a) {
|
| entry:
|
| @@ -379,7 +389,7 @@ entry:
|
| }
|
| ; CHECK-LABEL: floatToUnsigned1
|
| ; CHECK: cvttss2si
|
| -; CHECK: and eax, 1
|
| +; CHECK: and eax,0x1
|
|
|
| define internal double @signed64ToDouble(i64 %a) {
|
| entry:
|
| @@ -387,8 +397,9 @@ entry:
|
| ret double %conv
|
| }
|
| ; CHECK-LABEL: signed64ToDouble
|
| -; CHECK: call cvtsi64tod
|
| -; CHECK: fstp qword
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtsi64tod
|
| +; CHECK: fstp QWORD
|
|
|
| define internal float @signed64ToFloat(i64 %a) {
|
| entry:
|
| @@ -396,8 +407,9 @@ entry:
|
| ret float %conv
|
| }
|
| ; CHECK-LABEL: signed64ToFloat
|
| -; CHECK: call cvtsi64tof
|
| -; CHECK: fstp dword
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtsi64tof
|
| +; CHECK: fstp DWORD
|
|
|
| define internal double @unsigned64ToDouble(i64 %a) {
|
| entry:
|
| @@ -405,7 +417,8 @@ entry:
|
| ret double %conv
|
| }
|
| ; CHECK-LABEL: unsigned64ToDouble
|
| -; CHECK: call cvtui64tod
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtui64tod
|
| ; CHECK: fstp
|
|
|
| define internal float @unsigned64ToFloat(i64 %a) {
|
| @@ -414,7 +427,8 @@ entry:
|
| ret float %conv
|
| }
|
| ; CHECK-LABEL: unsigned64ToFloat
|
| -; CHECK: call cvtui64tof
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtui64tof
|
| ; CHECK: fstp
|
|
|
| define internal double @unsigned64ToDoubleConst() {
|
| @@ -423,9 +437,10 @@ entry:
|
| ret double %conv
|
| }
|
| ; CHECK-LABEL: unsigned64ToDouble
|
| -; CHECK: mov dword ptr [esp + 4], 2874
|
| -; CHECK: mov dword ptr [esp], 1942892530
|
| -; CHECK: call cvtui64tod
|
| +; CHECK: mov DWORD PTR [esp+0x4],0xb3a
|
| +; CHECK: mov DWORD PTR [esp],0x73ce2ff2
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtui64tod
|
| ; CHECK: fstp
|
|
|
| define internal double @signed32ToDouble(i32 %a) {
|
| @@ -461,8 +476,9 @@ entry:
|
| ret double %conv
|
| }
|
| ; CHECK-LABEL: unsigned32ToDouble
|
| -; CHECK: call cvtui32tod
|
| -; CHECK: fstp qword
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtui32tod
|
| +; CHECK: fstp QWORD
|
|
|
| define internal float @unsigned32ToFloat(i32 %a) {
|
| entry:
|
| @@ -470,8 +486,9 @@ entry:
|
| ret float %conv
|
| }
|
| ; CHECK-LABEL: unsigned32ToFloat
|
| -; CHECK: call cvtui32tof
|
| -; CHECK: fstp dword
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} cvtui32tof
|
| +; CHECK: fstp DWORD
|
|
|
| define internal double @signed16ToDouble(i32 %a) {
|
| entry:
|
| @@ -481,7 +498,7 @@ entry:
|
| }
|
| ; CHECK-LABEL: signed16ToDouble
|
| ; CHECK: cvtsi2sd
|
| -; CHECK: fld qword
|
| +; CHECK: fld QWORD
|
|
|
| define internal float @signed16ToFloat(i32 %a) {
|
| entry:
|
| @@ -491,7 +508,7 @@ entry:
|
| }
|
| ; CHECK-LABEL: signed16ToFloat
|
| ; CHECK: cvtsi2ss
|
| -; CHECK: fld dword
|
| +; CHECK: fld DWORD
|
|
|
| define internal double @unsigned16ToDouble(i32 %a) {
|
| entry:
|
| @@ -638,11 +655,13 @@ if.end3: ; preds = %if.then2, %if.end
|
| ; CHECK: ucomiss
|
| ; CHECK: jne {{[0-9]}}
|
| ; CHECK-NEXT: jp {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: jne {{[0-9]}}
|
| ; CHECK-NEXT: jp {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define void @func() {
|
| entry:
|
| @@ -673,11 +692,13 @@ if.end3: ; preds = %if.then2, %if.end
|
| ; CHECK: ucomiss
|
| ; CHECK: jne {{[0-9]}}
|
| ; CHECK-NEXT: jp {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: jne {{[0-9]}}
|
| ; CHECK-NEXT: jp {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define internal void @fcmpGt(float %a, float %b, double %c, double %d) {
|
| entry:
|
| @@ -702,10 +723,12 @@ if.end3: ; preds = %if.then2, %if.end
|
| ; CHECK-LABEL: fcmpGt
|
| ; CHECK: ucomiss
|
| ; CHECK: ja {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: ja {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define internal void @fcmpGe(float %a, float %b, double %c, double %d) {
|
| entry:
|
| @@ -730,10 +753,12 @@ if.end3: ; preds = %if.end, %if.then2
|
| ; CHECK-LABEL: fcmpGe
|
| ; CHECK: ucomiss
|
| ; CHECK: jb {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: jb {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define internal void @fcmpLt(float %a, float %b, double %c, double %d) {
|
| entry:
|
| @@ -758,10 +783,12 @@ if.end3: ; preds = %if.then2, %if.end
|
| ; CHECK-LABEL: fcmpLt
|
| ; CHECK: ucomiss
|
| ; CHECK: ja {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: ja {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define internal void @fcmpLe(float %a, float %b, double %c, double %d) {
|
| entry:
|
| @@ -786,10 +813,12 @@ if.end3: ; preds = %if.end, %if.then2
|
| ; CHECK-LABEL: fcmpLe
|
| ; CHECK: ucomiss
|
| ; CHECK: jb {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
| ; CHECK: ucomisd
|
| ; CHECK: jb {{[0-9]}}
|
| -; CHECK: call func
|
| +; CHECK: call
|
| +; CHECK-NEXT: R_{{.*}} func
|
|
|
| define internal i32 @fcmpFalseFloat(float %a, float %b) {
|
| entry:
|
| @@ -798,7 +827,7 @@ entry:
|
| ret i32 %cmp.ret_ext
|
| }
|
| ; CHECK-LABEL: fcmpFalseFloat
|
| -; CHECK: mov {{.*}}, 0
|
| +; CHECK: mov {{.*}},0x0
|
|
|
| define internal i32 @fcmpFalseDouble(double %a, double %b) {
|
| entry:
|
| @@ -807,7 +836,7 @@ entry:
|
| ret i32 %cmp.ret_ext
|
| }
|
| ; CHECK-LABEL: fcmpFalseDouble
|
| -; CHECK: mov {{.*}}, 0
|
| +; CHECK: mov {{.*}},0x0
|
|
|
| define internal i32 @fcmpOeqFloat(float %a, float %b) {
|
| entry:
|
| @@ -1100,7 +1129,7 @@ entry:
|
| ret i32 %cmp.ret_ext
|
| }
|
| ; CHECK-LABEL: fcmpTrueFloat
|
| -; CHECK: mov {{.*}}, 1
|
| +; CHECK: mov {{.*}},0x1
|
|
|
| define internal i32 @fcmpTrueDouble(double %a, double %b) {
|
| entry:
|
| @@ -1109,7 +1138,7 @@ entry:
|
| ret i32 %cmp.ret_ext
|
| }
|
| ; CHECK-LABEL: fcmpTrueDouble
|
| -; CHECK: mov {{.*}}, 1
|
| +; CHECK: mov {{.*}},0x1
|
|
|
| define internal float @loadFloat(i32 %a) {
|
| entry:
|
| @@ -1137,7 +1166,7 @@ entry:
|
| store float %value, float* %__2, align 4
|
| ret void
|
| }
|
| -; CHECK-LABEL: storeFloat:
|
| +; CHECK-LABEL: storeFloat
|
| ; CHECK: movss
|
| ; CHECK: movss
|
|
|
| @@ -1147,7 +1176,7 @@ entry:
|
| store double %value, double* %__2, align 8
|
| ret void
|
| }
|
| -; CHECK-LABEL: storeDouble:
|
| +; CHECK-LABEL: storeDouble
|
| ; CHECK: movsd
|
| ; CHECK: movsd
|
|
|
|
|