Index: tests_lit/llvm2ice_tests/bitcast.ll |
diff --git a/tests_lit/llvm2ice_tests/bitcast.ll b/tests_lit/llvm2ice_tests/bitcast.ll |
index 3f93d49402064dd4bf44aaad801883802ad306ec..7b99783db7889cec2b1e111bbb420f459295d02f 100644 |
--- a/tests_lit/llvm2ice_tests/bitcast.ll |
+++ b/tests_lit/llvm2ice_tests/bitcast.ll |
@@ -13,6 +13,16 @@ |
; RUN: | %if --need=target_ARM32 --command FileCheck %s \ |
; RUN: --check-prefix=ARM32 |
+; RUN: %if --need=target_MIPS32 --command %p2i --filetype=asm \ |
Jim Stichnoth
2016/10/12 06:35:47
These new tests fail in a MINIMAL build because fi
|
+; RUN: --target mips32 -i %s --args -O2 \ |
+; RUN: | %if --need=target_MIPS32 --command FileCheck %s \ |
+; RUN: --check-prefix=MIPS32 --check-prefix=MIPS32-O2 |
+ |
+; RUN: %if --need=target_MIPS32 --command %p2i --filetype=asm \ |
+; RUN: --target mips32 -i %s --args -Om1 \ |
+; RUN: | %if --need=target_MIPS32 --command FileCheck %s \ |
+; RUN: --check-prefix=MIPS32 --check-prefix=MIPS32-OM1 |
+ |
define internal i32 @cast_f2i(float %f) { |
entry: |
%v0 = bitcast float %f to i32 |
@@ -22,6 +32,10 @@ entry: |
; CHECK: movd eax |
; ARM32-LABEL: cast_f2i |
; ARM32: vmov r{{[0-9]+}}, s{{[0-9]+}} |
+; MIPS32-LABEL: cast_f2i |
+; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}} |
+; MIPS32-OM1: swc1 |
+; MIPS32-OM1: lw |
define internal float @cast_i2f(i32 %i) { |
entry: |
@@ -32,6 +46,10 @@ entry: |
; CHECK: fld DWORD PTR |
; ARM32-LABEL: cast_i2f |
; ARM32: vmov s{{[0-9]+}}, r{{[0-9]+}} |
+; MIPS32-LABEL: cast_i2f |
+; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}} |
+; MIPS32-OM1: sw |
+; MIPS32-OM1: lwc1 |
define internal i64 @cast_d2ll(double %d) { |
entry: |
@@ -42,6 +60,12 @@ entry: |
; CHECK: mov edx |
; ARM32-LABEL: cast_d2ll |
; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, d{{[0-9]+}} |
+; MIPS32-LABEL: cast_d2ll |
+; MIPS32-O2: mfc1 $v1, $f{{[0-9]+}} |
+; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}} |
+; MIPS32-OM1: sdc1 |
+; MIPS32-OM1: lw |
+; MIPS32-OM1: lw |
define internal i64 @cast_d2ll_const() { |
entry: |
@@ -56,6 +80,14 @@ entry: |
; ARM32-DAG: movt [[ADDR]], #{{.*_MOVT_}} |
; ARM32-DAG: vldr [[DREG:d[0-9]+]], {{\[}}[[ADDR]]{{\]}} |
; ARM32: vmov r{{[0-9]+}}, r{{[0-9]+}}, [[DREG]] |
+; MIPS32-LABEL: cast_d2ll_const |
+; MIPS32: lui {{.*}}, %hi(.L$double$0012345678901234) |
+; MIPS32: ldc1 {{.*}}, %lo(.L$double$0012345678901234)({{.*}}) |
+; MIPS32-O2: mfc1 $v1, $f{{[0-9]+}} |
+; MIPS32-O2: mfc1 $v0, $f{{[0-9]+}} |
+; MIPS32-OM1: sdc1 |
+; MIPS32-OM1: lw |
+; MIPS32-OM1: lw |
define internal double @cast_ll2d(i64 %ll) { |
entry: |
@@ -66,6 +98,12 @@ entry: |
; CHECK: fld QWORD PTR |
; ARM32-LABEL: cast_ll2d |
; ARM32: vmov d{{[0-9]+}}, r{{[0-9]+}}, r{{[0-9]+}} |
+; MIPS32-LABEL: cast_ll2d |
+; MIPS32-O2: mtc1 $a0, $f{{[0-9]+}} |
+; MIPS32-O2: mtc1 $a1, $f{{[0-9]+}} |
+; MIPS32-OM1: sw |
+; MIPS32-OM1: sw |
+; MIPS32-OM1: ldc1 |
define internal double @cast_ll2d_const() { |
entry: |
@@ -81,3 +119,12 @@ entry: |
; ARM32-DAG: movt [[REG0:r[0-9]+]], #29646 |
; ARM32-DAG: movw [[REG1:r[0-9]+]], #2874 |
; ARM32: vmov d{{[0-9]+}}, [[REG0]], [[REG1]] |
+; MIPS32-LABEL: cast_ll2d_const |
+; MIPS32: lui {{.*}}, 29646 |
+; MIPS32: ori {{.*}}, {{.*}}, 12274 |
+; MIPS32: addiu {{.*}}, $zero, 2874 |
+; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}} |
+; MIPS32-O2: mtc1 {{.*}}, $f{{[0-9]+}} |
+; MIPS32-OM1: sw |
+; MIPS32-OM1: sw |
+; MIPS32-OM1: ldc1 |