| Index: tests_lit/llvm2ice_tests/vector-cast.ll
|
| diff --git a/tests_lit/llvm2ice_tests/vector-cast.ll b/tests_lit/llvm2ice_tests/vector-cast.ll
|
| index d36b7b9e924cb542bab1009cd313fd7f50e25c94..30d667400a1be044737dd4e10a04e93ee2aee995 100644
|
| --- a/tests_lit/llvm2ice_tests/vector-cast.ll
|
| +++ b/tests_lit/llvm2ice_tests/vector-cast.ll
|
| @@ -1,8 +1,15 @@
|
| ; This file tests casting / conversion operations that apply to vector types.
|
| ; bitcast operations are in vector-bitcast.ll.
|
|
|
| -; RUN: %p2i -i %s --filetype=obj --disassemble --args -O2 | FileCheck %s
|
| -; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 | FileCheck %s
|
| +; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -O2 \
|
| +; RUN: | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK
|
| +; RUN: %p2i -i %s --target=x8632 --filetype=obj --disassemble --args -Om1 \
|
| +; RUN: | FileCheck %s --check-prefix=X8632 --check-prefix=CHECK
|
| +
|
| +; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -O2 \
|
| +; RUN: | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK
|
| +; RUN: %p2i -i %s --target=arm32 --filetype=obj --disassemble --args -Om1 \
|
| +; RUN: | FileCheck %s --check-prefix=ARM32 --check-prefix=CHECK
|
|
|
| ; sext operations
|
|
|
| @@ -12,12 +19,14 @@ entry:
|
| ret <16 x i8> %res
|
|
|
| ; CHECK-LABEL: test_sext_v16i1_to_v16i8
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqb
|
| -; CHECK: psubb
|
| -; CHECK: pand
|
| -; CHECK: pxor
|
| -; CHECK: pcmpgtb
|
| +; X8632: pxor
|
| +; X8632: pcmpeqb
|
| +; X8632: psubb
|
| +; X8632: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpgtb
|
| +; ARM32: vshl.s8
|
| +; ARM32-NEXT: vshr.s8
|
| }
|
|
|
| define internal <8 x i16> @test_sext_v8i1_to_v8i16(<8 x i1> %arg) {
|
| @@ -26,8 +35,10 @@ entry:
|
| ret <8 x i16> %res
|
|
|
| ; CHECK-LABEL: test_sext_v8i1_to_v8i16
|
| -; CHECK: psllw {{.*}},0xf
|
| -; CHECK: psraw {{.*}},0xf
|
| +; X8632: psllw {{.*}},0xf
|
| +; X8632: psraw {{.*}},0xf
|
| +; ARM32: vshl.s16
|
| +; ARM32-NEXT: vshr.s16
|
| }
|
|
|
| define internal <4 x i32> @test_sext_v4i1_to_v4i32(<4 x i1> %arg) {
|
| @@ -36,8 +47,10 @@ entry:
|
| ret <4 x i32> %res
|
|
|
| ; CHECK-LABEL: test_sext_v4i1_to_v4i32
|
| -; CHECK: pslld {{.*}},0x1f
|
| -; CHECK: psrad {{.*}},0x1f
|
| +; X8632: pslld {{.*}},0x1f
|
| +; X8632: psrad {{.*}},0x1f
|
| +; ARM32: vshl.s32
|
| +; ARM32-NEXT: vshr.s32
|
| }
|
|
|
| ; zext operations
|
| @@ -48,10 +61,12 @@ entry:
|
| ret <16 x i8> %res
|
|
|
| ; CHECK-LABEL: test_zext_v16i1_to_v16i8
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqb
|
| -; CHECK: psubb
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqb
|
| +; X8632: psubb
|
| +; X8632: pand
|
| +; ARM32: vmov.i8 [[S:.*]], #1
|
| +; ARM32-NEXT: vand {{.*}}, [[S]]
|
| }
|
|
|
| define internal <8 x i16> @test_zext_v8i1_to_v8i16(<8 x i1> %arg) {
|
| @@ -60,10 +75,12 @@ entry:
|
| ret <8 x i16> %res
|
|
|
| ; CHECK-LABEL: test_zext_v8i1_to_v8i16
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqw
|
| -; CHECK: psubw
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqw
|
| +; X8632: psubw
|
| +; X8632: pand
|
| +; ARM32: vmov.i16 [[S:.*]], #1
|
| +; ARM32-NEXT: vand {{.*}}, [[S]]
|
| }
|
|
|
| define internal <4 x i32> @test_zext_v4i1_to_v4i32(<4 x i1> %arg) {
|
| @@ -72,10 +89,12 @@ entry:
|
| ret <4 x i32> %res
|
|
|
| ; CHECK-LABEL: test_zext_v4i1_to_v4i32
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqd
|
| -; CHECK: psubd
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqd
|
| +; X8632: psubd
|
| +; X8632: pand
|
| +; ARM32: vmov.i32 [[S:.*]], #1
|
| +; ARM32-NEXT: vand {{.*}}, [[S]]
|
| }
|
|
|
| ; trunc operations
|
| @@ -86,10 +105,10 @@ entry:
|
| ret <16 x i1> %res
|
|
|
| ; CHECK-LABEL: test_trunc_v16i8_to_v16i1
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqb
|
| -; CHECK: psubb
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqb
|
| +; X8632: psubb
|
| +; X8632: pand
|
| }
|
|
|
| define internal <8 x i1> @test_trunc_v8i16_to_v8i1(<8 x i16> %arg) {
|
| @@ -98,10 +117,10 @@ entry:
|
| ret <8 x i1> %res
|
|
|
| ; CHECK-LABEL: test_trunc_v8i16_to_v8i1
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqw
|
| -; CHECK: psubw
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqw
|
| +; X8632: psubw
|
| +; X8632: pand
|
| }
|
|
|
| define internal <4 x i1> @test_trunc_v4i32_to_v4i1(<4 x i32> %arg) {
|
| @@ -110,10 +129,10 @@ entry:
|
| ret <4 x i1> %res
|
|
|
| ; CHECK-LABEL: test_trunc_v4i32_to_v4i1
|
| -; CHECK: pxor
|
| -; CHECK: pcmpeqd
|
| -; CHECK: psubd
|
| -; CHECK: pand
|
| +; X8632: pxor
|
| +; X8632: pcmpeqd
|
| +; X8632: psubd
|
| +; X8632: pand
|
| }
|
|
|
| ; fpto[us]i operations
|
| @@ -124,7 +143,8 @@ entry:
|
| ret <4 x i32> %res
|
|
|
| ; CHECK-LABEL: test_fptosi_v4f32_to_v4i32
|
| -; CHECK: cvttps2dq
|
| +; X8632: cvttps2dq
|
| +; ARM32: vcvt.s32.f32
|
| }
|
|
|
| define internal <4 x i32> @test_fptoui_v4f32_to_v4i32(<4 x float> %arg) {
|
| @@ -133,7 +153,8 @@ entry:
|
| ret <4 x i32> %res
|
|
|
| ; CHECK-LABEL: test_fptoui_v4f32_to_v4i32
|
| -; CHECK: call {{.*}} R_{{.*}} __Sz_fptoui_4xi32_f32
|
| +; X8632: call {{.*}} R_{{.*}} __Sz_fptoui_4xi32_f32
|
| +; ARM32: vcvt.u32.f32
|
| }
|
|
|
| ; [su]itofp operations
|
| @@ -144,7 +165,8 @@ entry:
|
| ret <4 x float> %res
|
|
|
| ; CHECK-LABEL: test_sitofp_v4i32_to_v4f32
|
| -; CHECK: cvtdq2ps
|
| +; X8632: cvtdq2ps
|
| +; ARM32: vcvt.f32.s32
|
| }
|
|
|
| define internal <4 x float> @test_uitofp_v4i32_to_v4f32(<4 x i32> %arg) {
|
| @@ -153,5 +175,6 @@ entry:
|
| ret <4 x float> %res
|
|
|
| ; CHECK-LABEL: test_uitofp_v4i32_to_v4f32
|
| -; CHECK: call {{.*}} R_{{.*}} __Sz_uitofp_4xi32_4xf32
|
| +; X8632: call {{.*}} R_{{.*}} __Sz_uitofp_4xi32_4xf32
|
| +; ARM32: vcvt.f32.u32
|
| }
|
|
|