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 |