@@ -64,8 +64,8 @@ define i16 @extract_elt2_v4i16_readfirstlane(<4 x i16> %src) {
64
64
define <2 x i16 > @extract_elt01_v4i16_readfirstlane (<4 x i16 > %src ) {
65
65
; CHECK-LABEL: define <2 x i16> @extract_elt01_v4i16_readfirstlane(
66
66
; CHECK-SAME: <4 x i16> [[SRC:%.*]]) #[[ATTR0]] {
67
- ; CHECK-NEXT: [[TMP1 :%.*]] = shufflevector <4 x i16> [[SRC]], <4 x i16> poison, <2 x i32> <i32 0, i32 1>
68
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = call <2 x i16> @llvm.amdgcn.readfirstlane.v2i16(<2 x i16> [[TMP1]])
67
+ ; CHECK-NEXT: [[VEC :%.*]] = call <4 x i16> @llvm.amdgcn.readfirstlane.v4i16( <4 x i16> [[SRC]])
68
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[VEC]], <4 x i16> poison, <2 x i32> <i32 0, i32 1>
69
69
; CHECK-NEXT: ret <2 x i16> [[SHUFFLE]]
70
70
;
71
71
%vec = call <4 x i16 > @llvm.amdgcn.readfirstlane.v4i16 (<4 x i16 > %src )
@@ -76,8 +76,8 @@ define <2 x i16> @extract_elt01_v4i16_readfirstlane(<4 x i16> %src) {
76
76
define <2 x i16 > @extract_elt12_v4i16_readfirstlane (<4 x i16 > %src ) {
77
77
; CHECK-LABEL: define <2 x i16> @extract_elt12_v4i16_readfirstlane(
78
78
; CHECK-SAME: <4 x i16> [[SRC:%.*]]) #[[ATTR0]] {
79
- ; CHECK-NEXT: [[TMP1 :%.*]] = shufflevector <4 x i16> [[SRC]], <4 x i16> poison, <2 x i32> <i32 1, i32 2>
80
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = call <2 x i16> @llvm.amdgcn.readfirstlane.v2i16(<2 x i16> [[TMP1]])
79
+ ; CHECK-NEXT: [[VEC :%.*]] = call <4 x i16> @llvm.amdgcn.readfirstlane.v4i16( <4 x i16> [[SRC]])
80
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[VEC]], <4 x i16> poison, <2 x i32> <i32 1, i32 2>
81
81
; CHECK-NEXT: ret <2 x i16> [[SHUFFLE]]
82
82
;
83
83
%vec = call <4 x i16 > @llvm.amdgcn.readfirstlane.v4i16 (<4 x i16 > %src )
@@ -88,8 +88,8 @@ define <2 x i16> @extract_elt12_v4i16_readfirstlane(<4 x i16> %src) {
88
88
define <2 x i16 > @extract_elt23_v4i16_readfirstlane (<4 x i16 > %src ) {
89
89
; CHECK-LABEL: define <2 x i16> @extract_elt23_v4i16_readfirstlane(
90
90
; CHECK-SAME: <4 x i16> [[SRC:%.*]]) #[[ATTR0]] {
91
- ; CHECK-NEXT: [[TMP1 :%.*]] = shufflevector <4 x i16> [[SRC]], <4 x i16> poison, <2 x i32> <i32 2, i32 3>
92
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = call <2 x i16> @llvm.amdgcn.readfirstlane.v2i16(<2 x i16> [[TMP1]])
91
+ ; CHECK-NEXT: [[VEC :%.*]] = call <4 x i16> @llvm.amdgcn.readfirstlane.v4i16( <4 x i16> [[SRC]])
92
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[VEC]], <4 x i16> poison, <2 x i32> <i32 2, i32 3>
93
93
; CHECK-NEXT: ret <2 x i16> [[SHUFFLE]]
94
94
;
95
95
%vec = call <4 x i16 > @llvm.amdgcn.readfirstlane.v4i16 (<4 x i16 > %src )
@@ -100,9 +100,8 @@ define <2 x i16> @extract_elt23_v4i16_readfirstlane(<4 x i16> %src) {
100
100
define <2 x i16 > @extract_elt10_v4i16_readfirstlane (<4 x i16 > %src ) {
101
101
; CHECK-LABEL: define <2 x i16> @extract_elt10_v4i16_readfirstlane(
102
102
; CHECK-SAME: <4 x i16> [[SRC:%.*]]) #[[ATTR0]] {
103
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i16> [[SRC]], <4 x i16> poison, <2 x i32> <i32 0, i32 1>
104
- ; CHECK-NEXT: [[TMP2:%.*]] = call <2 x i16> @llvm.amdgcn.readfirstlane.v2i16(<2 x i16> [[TMP1]])
105
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <2 x i16> [[TMP2]], <2 x i16> poison, <2 x i32> <i32 1, i32 0>
103
+ ; CHECK-NEXT: [[VEC:%.*]] = call <4 x i16> @llvm.amdgcn.readfirstlane.v4i16(<4 x i16> [[SRC]])
104
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[VEC]], <4 x i16> poison, <2 x i32> <i32 1, i32 0>
106
105
; CHECK-NEXT: ret <2 x i16> [[SHUFFLE]]
107
106
;
108
107
%vec = call <4 x i16 > @llvm.amdgcn.readfirstlane.v4i16 (<4 x i16 > %src )
@@ -113,9 +112,7 @@ define <2 x i16> @extract_elt10_v4i16_readfirstlane(<4 x i16> %src) {
113
112
define <2 x i16 > @extract_elt32_v4i16_readfirstlane (<4 x i16 > %src ) {
114
113
; CHECK-LABEL: define <2 x i16> @extract_elt32_v4i16_readfirstlane(
115
114
; CHECK-SAME: <4 x i16> [[SRC:%.*]]) #[[ATTR0]] {
116
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i16> [[SRC]], <4 x i16> poison, <2 x i32> <i32 2, i32 3>
117
- ; CHECK-NEXT: [[TMP2:%.*]] = call <2 x i16> @llvm.amdgcn.readfirstlane.v2i16(<2 x i16> [[TMP1]])
118
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <2 x i16> [[TMP2]], <2 x i16> poison, <4 x i32> <i32 poison, i32 poison, i32 0, i32 1>
115
+ ; CHECK-NEXT: [[VEC:%.*]] = call <4 x i16> @llvm.amdgcn.readfirstlane.v4i16(<4 x i16> [[SRC]])
119
116
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i16> [[VEC]], <4 x i16> poison, <2 x i32> <i32 3, i32 2>
120
117
; CHECK-NEXT: ret <2 x i16> [[SHUFFLE]]
121
118
;
@@ -261,8 +258,8 @@ define <3 x i16> @extract_elt123_v4i16_readfirstlane(<4 x i16> %src) {
261
258
define <3 x i32 > @extract_elt012_v4i32_readfirstlane (<4 x i32 > %src ) {
262
259
; CHECK-LABEL: define <3 x i32> @extract_elt012_v4i32_readfirstlane(
263
260
; CHECK-SAME: <4 x i32> [[SRC:%.*]]) #[[ATTR0]] {
264
- ; CHECK-NEXT: [[TMP1 :%.*]] = shufflevector <4 x i32> [[SRC]], <4 x i32> poison, <3 x i32> <i32 0, i32 1, i32 2>
265
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(< 3 x i32> [[TMP1]])
261
+ ; CHECK-NEXT: [[VEC :%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32( <4 x i32> [[SRC]])
262
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[VEC]], <4 x i32> poison, < 3 x i32> <i32 0, i32 1, i32 2>
266
263
; CHECK-NEXT: ret <3 x i32> [[SHUFFLE]]
267
264
;
268
265
%vec = call <4 x i32 > @llvm.amdgcn.readfirstlane.v4i32 (<4 x i32 > %src )
@@ -273,8 +270,8 @@ define <3 x i32> @extract_elt012_v4i32_readfirstlane(<4 x i32> %src) {
273
270
define <3 x i32 > @extract_elt123_v4i32_readfirstlane (<4 x i32 > %src ) {
274
271
; CHECK-LABEL: define <3 x i32> @extract_elt123_v4i32_readfirstlane(
275
272
; CHECK-SAME: <4 x i32> [[SRC:%.*]]) #[[ATTR0]] {
276
- ; CHECK-NEXT: [[TMP1 :%.*]] = shufflevector <4 x i32> [[SRC]], <4 x i32> poison, <3 x i32> <i32 1, i32 2, i32 3>
277
- ; CHECK-NEXT: [[SHUFFLE:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(< 3 x i32> [[TMP1]])
273
+ ; CHECK-NEXT: [[VEC :%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32( <4 x i32> [[SRC]])
274
+ ; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[VEC]], <4 x i32> poison, < 3 x i32> <i32 1, i32 2, i32 3>
278
275
; CHECK-NEXT: ret <3 x i32> [[SHUFFLE]]
279
276
;
280
277
%vec = call <4 x i32 > @llvm.amdgcn.readfirstlane.v4i32 (<4 x i32 > %src )
@@ -285,9 +282,7 @@ define <3 x i32> @extract_elt123_v4i32_readfirstlane(<4 x i32> %src) {
285
282
define <2 x i32 > @extract_elt13_v4i32_readfirstlane (<4 x i32 > %src ) {
286
283
; CHECK-LABEL: define <2 x i32> @extract_elt13_v4i32_readfirstlane(
287
284
; CHECK-SAME: <4 x i32> [[SRC:%.*]]) #[[ATTR0]] {
288
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i32> [[SRC]], <4 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 3>
289
- ; CHECK-NEXT: [[TMP2:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(<3 x i32> [[TMP1]])
290
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <3 x i32> [[TMP2]], <3 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 poison, i32 2>
285
+ ; CHECK-NEXT: [[VEC:%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32(<4 x i32> [[SRC]])
291
286
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[VEC]], <4 x i32> poison, <2 x i32> <i32 1, i32 3>
292
287
; CHECK-NEXT: ret <2 x i32> [[SHUFFLE]]
293
288
;
@@ -326,9 +321,8 @@ define < 2 x i32> @extract_elt13_v4i32_readfirstlane_source_simplify1(i32 %src0,
326
321
; CHECK-LABEL: define <2 x i32> @extract_elt13_v4i32_readfirstlane_source_simplify1(
327
322
; CHECK-SAME: i32 [[SRC0:%.*]], i32 [[SRC2:%.*]]) #[[ATTR0]] {
328
323
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i32> poison, i32 [[SRC0]], i64 0
329
- ; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 0>
330
- ; CHECK-NEXT: [[TMP3:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(<3 x i32> [[TMP2]])
331
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <3 x i32> [[TMP3]], <3 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 poison, i32 2>
324
+ ; CHECK-NEXT: [[INS_1:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 poison, i32 0>
325
+ ; CHECK-NEXT: [[VEC:%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32(<4 x i32> [[INS_1]])
332
326
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[VEC]], <4 x i32> poison, <2 x i32> <i32 1, i32 3>
333
327
; CHECK-NEXT: ret <2 x i32> [[SHUFFLE]]
334
328
;
@@ -371,10 +365,7 @@ define < 2 x i32> @extract_elt13_v4i32_readfirstlane_source_simplify1_convergenc
371
365
; CHECK-NEXT: [[T:%.*]] = call token @llvm.experimental.convergence.entry()
372
366
; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x i32> poison, i32 [[SRC0]], i64 0
373
367
; CHECK-NEXT: [[INS_1:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 poison, i32 0>
374
- ; CHECK-NEXT: [[VEC1:%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32(<4 x i32> [[INS_1]]) [ "convergencectrl"(token [[T]]) ]
375
- ; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <4 x i32> [[TMP1]], <4 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 0>
376
- ; CHECK-NEXT: [[TMP3:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(<3 x i32> [[TMP2]]) [ "convergencectrl"(token [[T]]) ]
377
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <3 x i32> [[TMP3]], <3 x i32> poison, <4 x i32> <i32 poison, i32 0, i32 poison, i32 2>
368
+ ; CHECK-NEXT: [[VEC:%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32(<4 x i32> [[INS_1]]) [ "convergencectrl"(token [[T]]) ]
378
369
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <4 x i32> [[VEC]], <4 x i32> poison, <2 x i32> <i32 1, i32 3>
379
370
; CHECK-NEXT: ret <2 x i32> [[SHUFFLE]]
380
371
;
@@ -413,9 +404,7 @@ define <2 x i1> @extract_elt01_v4i1_readfirstlane(<4 x i1> %src) {
413
404
define <2 x i32 > @extract_elt13_v8i32_readfirstlane (<8 x i32 > %src ) {
414
405
; CHECK-LABEL: define <2 x i32> @extract_elt13_v8i32_readfirstlane(
415
406
; CHECK-SAME: <8 x i32> [[SRC:%.*]]) #[[ATTR0]] {
416
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x i32> [[SRC]], <8 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 3>
417
- ; CHECK-NEXT: [[TMP2:%.*]] = call <3 x i32> @llvm.amdgcn.readfirstlane.v3i32(<3 x i32> [[TMP1]])
418
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <3 x i32> [[TMP2]], <3 x i32> poison, <8 x i32> <i32 poison, i32 0, i32 poison, i32 2, i32 poison, i32 poison, i32 poison, i32 poison>
407
+ ; CHECK-NEXT: [[VEC:%.*]] = call <8 x i32> @llvm.amdgcn.readfirstlane.v8i32(<8 x i32> [[SRC]])
419
408
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <8 x i32> [[VEC]], <8 x i32> poison, <2 x i32> <i32 1, i32 3>
420
409
; CHECK-NEXT: ret <2 x i32> [[SHUFFLE]]
421
410
;
@@ -439,9 +428,7 @@ define <2 x i32> @extract_elt03_v4i32_readfirstlane(<4 x i32> %src) {
439
428
define <3 x i32 > @extract_elt124_v8i32_readfirstlane (<8 x i32 > %src ) {
440
429
; CHECK-LABEL: define <3 x i32> @extract_elt124_v8i32_readfirstlane(
441
430
; CHECK-SAME: <8 x i32> [[SRC:%.*]]) #[[ATTR0]] {
442
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x i32> [[SRC]], <8 x i32> poison, <4 x i32> <i32 1, i32 2, i32 poison, i32 4>
443
- ; CHECK-NEXT: [[TMP2:%.*]] = call <4 x i32> @llvm.amdgcn.readfirstlane.v4i32(<4 x i32> [[TMP1]])
444
- ; CHECK-NEXT: [[VEC:%.*]] = shufflevector <4 x i32> [[TMP2]], <4 x i32> poison, <8 x i32> <i32 poison, i32 0, i32 1, i32 poison, i32 3, i32 poison, i32 poison, i32 poison>
431
+ ; CHECK-NEXT: [[VEC:%.*]] = call <8 x i32> @llvm.amdgcn.readfirstlane.v8i32(<8 x i32> [[SRC]])
445
432
; CHECK-NEXT: [[SHUFFLE:%.*]] = shufflevector <8 x i32> [[VEC]], <8 x i32> poison, <3 x i32> <i32 1, i32 2, i32 4>
446
433
; CHECK-NEXT: ret <3 x i32> [[SHUFFLE]]
447
434
;
0 commit comments