@@ -7,7 +7,7 @@ target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
7
7
8
8
define <8 x i16 > @test_shrn_v8i16_t1 (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
9
9
; CHECK-LABEL: @test_shrn_v8i16_t1(
10
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 1, i16 -1 , i16 1, i16 -1 , i16 1, i16 -1 , i16 1, i16 -1 >
10
+ ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 1, i16 poison , i16 1, i16 poison , i16 1, i16 poison , i16 1, i16 poison >
11
11
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
12
12
; CHECK-NEXT: ret <8 x i16> [[Z]]
13
13
;
@@ -18,7 +18,7 @@ define <8 x i16> @test_shrn_v8i16_t1(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
18
18
19
19
define <8 x i16 > @test_shrn_v8i16_t2 (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
20
20
; CHECK-LABEL: @test_shrn_v8i16_t2(
21
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 -1, i16 1 , i16 -1, i16 1 , i16 -1, i16 1 , i16 -1, i16 1 >
21
+ ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 -1, i16 poison , i16 -1, i16 poison , i16 -1, i16 poison , i16 -1, i16 poison >
22
22
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
23
23
; CHECK-NEXT: ret <8 x i16> [[Z]]
24
24
;
@@ -29,7 +29,7 @@ define <8 x i16> @test_shrn_v8i16_t2(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
29
29
30
30
define <8 x i16 > @test_shrn_v8i16_b1 (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
31
31
; CHECK-LABEL: @test_shrn_v8i16_b1(
32
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 1 , i16 -1, i16 1 , i16 -1, i16 1 , i16 -1, i16 1 , i16 -1>
32
+ ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 poison , i16 -1, i16 poison , i16 -1, i16 poison , i16 -1, i16 poison , i16 -1>
33
33
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
34
34
; CHECK-NEXT: ret <8 x i16> [[Z]]
35
35
;
@@ -40,7 +40,7 @@ define <8 x i16> @test_shrn_v8i16_b1(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
40
40
41
41
define <8 x i16 > @test_shrn_v8i16_b2 (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
42
42
; CHECK-LABEL: @test_shrn_v8i16_b2(
43
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 -1 , i16 1, i16 -1 , i16 1, i16 -1 , i16 1, i16 -1 , i16 1>
43
+ ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], <i16 poison , i16 1, i16 poison , i16 1, i16 poison , i16 1, i16 poison , i16 1>
44
44
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
45
45
; CHECK-NEXT: ret <8 x i16> [[Z]]
46
46
;
@@ -51,8 +51,7 @@ define <8 x i16> @test_shrn_v8i16_b2(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
51
51
52
52
define <8 x i16 > @test_shrn_v8i16_bt (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
53
53
; CHECK-LABEL: @test_shrn_v8i16_bt(
54
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], [[B:%.*]]
55
- ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
54
+ ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> poison, <4 x i32> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
56
55
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[Y]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
57
56
; CHECK-NEXT: ret <8 x i16> [[Z]]
58
57
;
@@ -64,8 +63,7 @@ define <8 x i16> @test_shrn_v8i16_bt(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
64
63
65
64
define <8 x i16 > @test_shrn_v8i16_tb (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
66
65
; CHECK-LABEL: @test_shrn_v8i16_tb(
67
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], [[B:%.*]]
68
- ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
66
+ ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> poison, <4 x i32> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
69
67
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vshrn.v8i16.v4i32(<8 x i16> [[Y]], <4 x i32> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
70
68
; CHECK-NEXT: ret <8 x i16> [[Z]]
71
69
;
@@ -105,8 +103,7 @@ define <8 x i16> @test_shrn_v8i16_tt(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c, <
105
103
106
104
define <16 x i8 > @test_shrn_v16i8_bt (<16 x i8 > %a , <16 x i8 > %b , <8 x i16 > %c , <8 x i16 > %d ) {
107
105
; CHECK-LABEL: @test_shrn_v16i8_bt(
108
- ; CHECK-NEXT: [[X:%.*]] = add <16 x i8> [[A:%.*]], [[B:%.*]]
109
- ; CHECK-NEXT: [[Y:%.*]] = call <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8> [[X]], <8 x i16> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
106
+ ; CHECK-NEXT: [[Y:%.*]] = call <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8> poison, <8 x i16> [[C:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 0)
110
107
; CHECK-NEXT: [[Z:%.*]] = call <16 x i8> @llvm.arm.mve.vshrn.v16i8.v8i16(<16 x i8> [[Y]], <8 x i16> [[D:%.*]], i32 16, i32 0, i32 0, i32 0, i32 0, i32 1)
111
108
; CHECK-NEXT: ret <16 x i8> [[Z]]
112
109
;
@@ -171,8 +168,7 @@ define <16 x i8> @test_movnp_v16i8_bt(<16 x i8> %a, <16 x i8> %b, <8 x i16> %c,
171
168
172
169
define <8 x i16 > @test_qmovn_v8i16_bt (<8 x i16 > %a , <8 x i16 > %b , <4 x i32 > %c , <4 x i32 > %d ) {
173
170
; CHECK-LABEL: @test_qmovn_v8i16_bt(
174
- ; CHECK-NEXT: [[X:%.*]] = add <8 x i16> [[A:%.*]], [[B:%.*]]
175
- ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vqmovn.v8i16.v4i32(<8 x i16> [[X]], <4 x i32> [[C:%.*]], i32 0, i32 0, i32 0)
171
+ ; CHECK-NEXT: [[Y:%.*]] = call <8 x i16> @llvm.arm.mve.vqmovn.v8i16.v4i32(<8 x i16> poison, <4 x i32> [[C:%.*]], i32 0, i32 0, i32 0)
176
172
; CHECK-NEXT: [[Z:%.*]] = call <8 x i16> @llvm.arm.mve.vqmovn.v8i16.v4i32(<8 x i16> [[Y]], <4 x i32> [[D:%.*]], i32 0, i32 0, i32 1)
177
173
; CHECK-NEXT: ret <8 x i16> [[Z]]
178
174
;
@@ -184,8 +180,7 @@ define <8 x i16> @test_qmovn_v8i16_bt(<8 x i16> %a, <8 x i16> %b, <4 x i32> %c,
184
180
185
181
define <16 x i8 > @test_qmovn_v16i8_bt (<16 x i8 > %a , <16 x i8 > %b , <8 x i16 > %c , <8 x i16 > %d ) {
186
182
; CHECK-LABEL: @test_qmovn_v16i8_bt(
187
- ; CHECK-NEXT: [[X:%.*]] = add <16 x i8> [[A:%.*]], [[B:%.*]]
188
- ; CHECK-NEXT: [[Y:%.*]] = call <16 x i8> @llvm.arm.mve.vqmovn.v16i8.v8i16(<16 x i8> [[X]], <8 x i16> [[C:%.*]], i32 0, i32 0, i32 0)
183
+ ; CHECK-NEXT: [[Y:%.*]] = call <16 x i8> @llvm.arm.mve.vqmovn.v16i8.v8i16(<16 x i8> poison, <8 x i16> [[C:%.*]], i32 0, i32 0, i32 0)
189
184
; CHECK-NEXT: [[Z:%.*]] = call <16 x i8> @llvm.arm.mve.vqmovn.v16i8.v8i16(<16 x i8> [[Y]], <8 x i16> [[D:%.*]], i32 0, i32 0, i32 1)
190
185
; CHECK-NEXT: ret <16 x i8> [[Z]]
191
186
;
@@ -223,8 +218,7 @@ define <16 x i8> @test_qmovnp_v16i8_bt(<16 x i8> %a, <16 x i8> %b, <8 x i16> %c,
223
218
224
219
define <8 x half > @test_cvtn_v8i16_bt (<8 x half > %a , <8 x half > %b , <4 x float > %c , <4 x float > %d ) {
225
220
; CHECK-LABEL: @test_cvtn_v8i16_bt(
226
- ; CHECK-NEXT: [[X:%.*]] = fadd <8 x half> [[A:%.*]], [[B:%.*]]
227
- ; CHECK-NEXT: [[Y:%.*]] = call <8 x half> @llvm.arm.mve.vcvt.narrow(<8 x half> [[X]], <4 x float> [[C:%.*]], i32 0)
221
+ ; CHECK-NEXT: [[Y:%.*]] = call <8 x half> @llvm.arm.mve.vcvt.narrow(<8 x half> poison, <4 x float> [[C:%.*]], i32 0)
228
222
; CHECK-NEXT: [[Z:%.*]] = call <8 x half> @llvm.arm.mve.vcvt.narrow(<8 x half> [[Y]], <4 x float> [[D:%.*]], i32 1)
229
223
; CHECK-NEXT: ret <8 x half> [[Z]]
230
224
;
0 commit comments