@@ -385,19 +385,11 @@ entry:
385385}
386386
387387define <8 x i16 > @concat_high_high_v8i16 (<8 x i16 > %a_vec , <8 x i16 > %b_vec ) {
388- ; CHECK-SD-LABEL: concat_high_high_v8i16:
389- ; CHECK-SD: // %bb.0: // %entry
390- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
391- ; CHECK-SD-NEXT: ext v1.16b, v1.16b, v1.16b, #8
392- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
393- ; CHECK-SD-NEXT: ret
394- ;
395- ; CHECK-GI-LABEL: concat_high_high_v8i16:
396- ; CHECK-GI: // %bb.0: // %entry
397- ; CHECK-GI-NEXT: mov d0, v0.d[1]
398- ; CHECK-GI-NEXT: mov d1, v1.d[1]
399- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
400- ; CHECK-GI-NEXT: ret
388+ ; CHECK-LABEL: concat_high_high_v8i16:
389+ ; CHECK: // %bb.0: // %entry
390+ ; CHECK-NEXT: mov v1.d[0], v0.d[1]
391+ ; CHECK-NEXT: mov v0.16b, v1.16b
392+ ; CHECK-NEXT: ret
401393entry:
402394 %shuffle.i3 = shufflevector <8 x i16 > %a_vec , <8 x i16 > poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
403395 %shuffle.i = shufflevector <8 x i16 > %b_vec , <8 x i16 > poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
@@ -406,19 +398,11 @@ entry:
406398}
407399
408400define <8 x half > @concat_high_high_v8f16 (<8 x half > %a_vec , <8 x half > %b_vec ) {
409- ; CHECK-SD-LABEL: concat_high_high_v8f16:
410- ; CHECK-SD: // %bb.0: // %entry
411- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
412- ; CHECK-SD-NEXT: ext v1.16b, v1.16b, v1.16b, #8
413- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
414- ; CHECK-SD-NEXT: ret
415- ;
416- ; CHECK-GI-LABEL: concat_high_high_v8f16:
417- ; CHECK-GI: // %bb.0: // %entry
418- ; CHECK-GI-NEXT: mov d0, v0.d[1]
419- ; CHECK-GI-NEXT: mov d1, v1.d[1]
420- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
421- ; CHECK-GI-NEXT: ret
401+ ; CHECK-LABEL: concat_high_high_v8f16:
402+ ; CHECK: // %bb.0: // %entry
403+ ; CHECK-NEXT: mov v1.d[0], v0.d[1]
404+ ; CHECK-NEXT: mov v0.16b, v1.16b
405+ ; CHECK-NEXT: ret
422406entry:
423407 %shuffle.i3 = shufflevector <8 x half > %a_vec , <8 x half > poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
424408 %shuffle.i = shufflevector <8 x half > %b_vec , <8 x half > poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
@@ -427,19 +411,11 @@ entry:
427411}
428412
429413define <8 x bfloat> @concat_high_high_v8bf16 (<8 x bfloat> %a_vec , <8 x bfloat> %b_vec ) {
430- ; CHECK-SD-LABEL: concat_high_high_v8bf16:
431- ; CHECK-SD: // %bb.0: // %entry
432- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
433- ; CHECK-SD-NEXT: ext v1.16b, v1.16b, v1.16b, #8
434- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
435- ; CHECK-SD-NEXT: ret
436- ;
437- ; CHECK-GI-LABEL: concat_high_high_v8bf16:
438- ; CHECK-GI: // %bb.0: // %entry
439- ; CHECK-GI-NEXT: mov d0, v0.d[1]
440- ; CHECK-GI-NEXT: mov d1, v1.d[1]
441- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
442- ; CHECK-GI-NEXT: ret
414+ ; CHECK-LABEL: concat_high_high_v8bf16:
415+ ; CHECK: // %bb.0: // %entry
416+ ; CHECK-NEXT: mov v1.d[0], v0.d[1]
417+ ; CHECK-NEXT: mov v0.16b, v1.16b
418+ ; CHECK-NEXT: ret
443419entry:
444420 %shuffle.i3 = shufflevector <8 x bfloat> %a_vec , <8 x bfloat> poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
445421 %shuffle.i = shufflevector <8 x bfloat> %b_vec , <8 x bfloat> poison, <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
@@ -455,9 +431,8 @@ define <4 x i32> @concat_high_high_v4i32(<4 x i32> %a_vec, <4 x i32> %b_vec) {
455431;
456432; CHECK-GI-LABEL: concat_high_high_v4i32:
457433; CHECK-GI: // %bb.0: // %entry
458- ; CHECK-GI-NEXT: mov d0, v0.d[1]
459- ; CHECK-GI-NEXT: mov d1, v1.d[1]
460- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
434+ ; CHECK-GI-NEXT: mov v1.d[0], v0.d[1]
435+ ; CHECK-GI-NEXT: mov v0.16b, v1.16b
461436; CHECK-GI-NEXT: ret
462437entry:
463438 %shuffle.i3 = shufflevector <4 x i32 > %a_vec , <4 x i32 > poison, <2 x i32 > <i32 2 , i32 3 >
@@ -474,9 +449,8 @@ define <4 x float> @concat_high_high_v4f32(<4 x float> %a_vec, <4 x float> %b_ve
474449;
475450; CHECK-GI-LABEL: concat_high_high_v4f32:
476451; CHECK-GI: // %bb.0: // %entry
477- ; CHECK-GI-NEXT: mov d0, v0.d[1]
478- ; CHECK-GI-NEXT: mov d1, v1.d[1]
479- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
452+ ; CHECK-GI-NEXT: mov v1.d[0], v0.d[1]
453+ ; CHECK-GI-NEXT: mov v0.16b, v1.16b
480454; CHECK-GI-NEXT: ret
481455entry:
482456 %shuffle.i3 = shufflevector <4 x float > %a_vec , <4 x float > poison, <2 x i32 > <i32 2 , i32 3 >
@@ -486,19 +460,11 @@ entry:
486460}
487461
488462define <16 x i8 > @concat_high_high_v16i8 (<16 x i8 > %a_vec , <16 x i8 > %b_vec ) {
489- ; CHECK-SD-LABEL: concat_high_high_v16i8:
490- ; CHECK-SD: // %bb.0: // %entry
491- ; CHECK-SD-NEXT: ext v0.16b, v0.16b, v0.16b, #8
492- ; CHECK-SD-NEXT: ext v1.16b, v1.16b, v1.16b, #8
493- ; CHECK-SD-NEXT: mov v0.d[1], v1.d[0]
494- ; CHECK-SD-NEXT: ret
495- ;
496- ; CHECK-GI-LABEL: concat_high_high_v16i8:
497- ; CHECK-GI: // %bb.0: // %entry
498- ; CHECK-GI-NEXT: mov d0, v0.d[1]
499- ; CHECK-GI-NEXT: mov d1, v1.d[1]
500- ; CHECK-GI-NEXT: mov v0.d[1], v1.d[0]
501- ; CHECK-GI-NEXT: ret
463+ ; CHECK-LABEL: concat_high_high_v16i8:
464+ ; CHECK: // %bb.0: // %entry
465+ ; CHECK-NEXT: mov v1.d[0], v0.d[1]
466+ ; CHECK-NEXT: mov v0.16b, v1.16b
467+ ; CHECK-NEXT: ret
502468entry:
503469 %shuffle.i3 = shufflevector <16 x i8 > %a_vec , <16 x i8 > poison, <8 x i32 > <i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 >
504470 %shuffle.i = shufflevector <16 x i8 > %b_vec , <16 x i8 > poison, <8 x i32 > <i32 8 , i32 9 , i32 10 , i32 11 , i32 12 , i32 13 , i32 14 , i32 15 >
0 commit comments