Skip to content

Commit e0f78fb

Browse files
davemgreenronlieb
authored andcommitted
[VectorCombine] Remove requirement for Instructions in shuffleToIdentity (llvm#93543)
This removes the check that both operands of the original shuffle are instructions, which is a relic from a previous version that held more variables as Instructions. Change-Id: I2c095ceeb066d98a666952cfc52ddad523c16f2f
1 parent c34caa8 commit e0f78fb

File tree

2 files changed

+10
-24
lines changed

2 files changed

+10
-24
lines changed

llvm/test/Transforms/VectorCombine/AArch64/shuffletoidentity.ll

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ define <8 x i8> @trivial(<8 x i8> %a) {
1515

1616
define <4 x i32> @add_same_operands(<4 x i32> %x) {
1717
; CHECK-LABEL: @add_same_operands(
18-
; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
19-
; CHECK-NEXT: [[ADD:%.*]] = add <4 x i32> [[SHUF]], [[SHUF]]
20-
; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i32> [[ADD]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
18+
; CHECK-NEXT: [[REVSHUF:%.*]] = add <4 x i32> [[X:%.*]], [[X]]
2119
; CHECK-NEXT: ret <4 x i32> [[REVSHUF]]
2220
;
2321
%shuf = shufflevector <4 x i32> %x, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
@@ -377,8 +375,7 @@ define <8 x i8> @inner_shuffle(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
377375
define <4 x i32> @extrause_add_same_operands(<4 x i32> %x) {
378376
; CHECK-LABEL: @extrause_add_same_operands(
379377
; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
380-
; CHECK-NEXT: [[ADD:%.*]] = add <4 x i32> [[SHUF]], [[SHUF]]
381-
; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i32> [[ADD]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
378+
; CHECK-NEXT: [[REVSHUF:%.*]] = add <4 x i32> [[X]], [[X]]
382379
; CHECK-NEXT: [[ADD2:%.*]] = add <4 x i32> [[SHUF]], [[REVSHUF]]
383380
; CHECK-NEXT: ret <4 x i32> [[ADD2]]
384381
;
@@ -526,9 +523,7 @@ define <8 x half> @fma(<8 x half> %a, <8 x half> %b, <8 x half> %c) {
526523

527524
define <4 x i64> @single_zext(<4 x i32> %x) {
528525
; CHECK-LABEL: @single_zext(
529-
; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
530-
; CHECK-NEXT: [[ZEXT:%.*]] = zext <4 x i32> [[SHUF]] to <4 x i64>
531-
; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i64> [[ZEXT]], <4 x i64> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
526+
; CHECK-NEXT: [[REVSHUF:%.*]] = zext <4 x i32> [[X:%.*]] to <4 x i64>
532527
; CHECK-NEXT: ret <4 x i64> [[REVSHUF]]
533528
;
534529
%shuf = shufflevector <4 x i32> %x, <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
@@ -708,10 +703,8 @@ define void @trunc(<8 x i64> %a, <8 x i64> %b, ptr %p) {
708703

709704
define <4 x i64> @zext_chain(<4 x i16> %x) {
710705
; CHECK-LABEL: @zext_chain(
711-
; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i16> [[X:%.*]], <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
712-
; CHECK-NEXT: [[ZEXT:%.*]] = zext <4 x i16> [[SHUF]] to <4 x i32>
713-
; CHECK-NEXT: [[SEXT:%.*]] = sext <4 x i32> [[ZEXT]] to <4 x i64>
714-
; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i64> [[SEXT]], <4 x i64> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
706+
; CHECK-NEXT: [[TMP1:%.*]] = zext <4 x i16> [[X:%.*]] to <4 x i32>
707+
; CHECK-NEXT: [[REVSHUF:%.*]] = sext <4 x i32> [[TMP1]] to <4 x i64>
715708
; CHECK-NEXT: ret <4 x i64> [[REVSHUF]]
716709
;
717710
%shuf = shufflevector <4 x i16> %x, <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
@@ -912,13 +905,11 @@ entry:
912905

913906
define <4 x i8> @singleop(<4 x i8> %a, <4 x i8> %b) {
914907
; CHECK-LABEL: @singleop(
915-
; CHECK-NEXT: [[A1:%.*]] = shufflevector <4 x i8> [[A:%.*]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
916-
; CHECK-NEXT: [[B1:%.*]] = shufflevector <4 x i8> [[B:%.*]], <4 x i8> poison, <4 x i32> zeroinitializer
917-
; CHECK-NEXT: [[A2:%.*]] = zext <4 x i8> [[A1]] to <4 x i16>
918-
; CHECK-NEXT: [[B2:%.*]] = zext <4 x i8> [[B1]] to <4 x i16>
919-
; CHECK-NEXT: [[AB:%.*]] = add <4 x i16> [[A2]], [[B2]]
920-
; CHECK-NEXT: [[T:%.*]] = trunc <4 x i16> [[AB]] to <4 x i8>
921-
; CHECK-NEXT: [[R:%.*]] = shufflevector <4 x i8> [[T]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
908+
; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i8> [[B:%.*]], <4 x i8> poison, <4 x i32> zeroinitializer
909+
; CHECK-NEXT: [[TMP2:%.*]] = zext <4 x i8> [[A:%.*]] to <4 x i16>
910+
; CHECK-NEXT: [[TMP3:%.*]] = zext <4 x i8> [[TMP1]] to <4 x i16>
911+
; CHECK-NEXT: [[TMP4:%.*]] = add <4 x i16> [[TMP2]], [[TMP3]]
912+
; CHECK-NEXT: [[R:%.*]] = trunc <4 x i16> [[TMP4]] to <4 x i8>
922913
; CHECK-NEXT: ret <4 x i8> [[R]]
923914
;
924915
%a1 = shufflevector <4 x i8> %a, <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>

revert_patches.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,6 @@ Revert: breaks ipBlender*
6262

6363
contact: Pierre
6464

65-
---
66-
Revert: breaks hipCatch2
67-
[VectorCombine] Remove requirement for Instructions in shuffleToIdentity (#93543)
68-
69-
contact : RonL
7065
---
7166
Revert: temaplate breaks ComposableKernel build
7267
f46d1463b835 [clang] require template arg list after template kw (#80801)

0 commit comments

Comments
 (0)