Skip to content

Commit d364457

Browse files
committed
Integrated and autogenerated test.
1 parent 12bdc90 commit d364457

File tree

2 files changed

+174
-24
lines changed

2 files changed

+174
-24
lines changed

llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ashr.mir

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -969,6 +969,176 @@ body: |
969969
970970
...
971971

972+
---
973+
name: test_ashr_v4s1_v4s1
974+
body: |
975+
bb.0:
976+
liveins: $vgpr0, $vgpr1
977+
978+
; SI-LABEL: name: test_ashr_v4s1_v4s1
979+
; SI: liveins: $vgpr0, $vgpr1
980+
; SI-NEXT: {{ $}}
981+
; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
982+
; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
983+
; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
984+
; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)
985+
; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
986+
; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)
987+
; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
988+
; SI-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)
989+
; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
990+
; SI-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)
991+
; SI-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C1]](s32)
992+
; SI-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)
993+
; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]
994+
; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 1
995+
; SI-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXT_INREG]], [[AND]](s32)
996+
; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[LSHR3]], [[C]]
997+
; SI-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR]], 1
998+
; SI-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SEXT_INREG1]], [[AND1]](s32)
999+
; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[LSHR4]], [[C]]
1000+
; SI-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR1]], 1
1001+
; SI-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SEXT_INREG2]], [[AND2]](s32)
1002+
; SI-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR5]], [[C]]
1003+
; SI-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR2]], 1
1004+
; SI-NEXT: [[ASHR3:%[0-9]+]]:_(s32) = G_ASHR [[SEXT_INREG3]], [[AND3]](s32)
1005+
; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[ASHR]](s32)
1006+
; SI-NEXT: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
1007+
; SI-NEXT: [[AND4:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
1008+
; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C]](s32)
1009+
; SI-NEXT: [[AND5:%[0-9]+]]:_(s32) = G_AND [[ASHR1]], [[C]]
1010+
; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND5]], [[COPY2]](s32)
1011+
; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SHL]](s32)
1012+
; SI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND4]], [[TRUNC1]]
1013+
; SI-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C1]](s32)
1014+
; SI-NEXT: [[AND6:%[0-9]+]]:_(s32) = G_AND [[ASHR2]], [[C]]
1015+
; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[AND6]], [[COPY3]](s32)
1016+
; SI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[SHL1]](s32)
1017+
; SI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[OR]], [[TRUNC2]]
1018+
; SI-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[C2]](s32)
1019+
; SI-NEXT: [[AND7:%[0-9]+]]:_(s32) = G_AND [[ASHR3]], [[C]]
1020+
; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND7]], [[COPY4]](s32)
1021+
; SI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SHL2]](s32)
1022+
; SI-NEXT: [[OR2:%[0-9]+]]:_(s16) = G_OR [[OR1]], [[TRUNC3]]
1023+
; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR2]](s16)
1024+
; SI-NEXT: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]
1025+
; SI-NEXT: $vgpr0 = COPY [[AND8]](s32)
1026+
;
1027+
; VI-LABEL: name: test_ashr_v4s1_v4s1
1028+
; VI: liveins: $vgpr0, $vgpr1
1029+
; VI-NEXT: {{ $}}
1030+
; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1031+
; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1032+
; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1033+
; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)
1034+
; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1035+
; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)
1036+
; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1037+
; VI-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)
1038+
; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
1039+
; VI-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)
1040+
; VI-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C1]](s32)
1041+
; VI-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)
1042+
; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1043+
; VI-NEXT: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
1044+
; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
1045+
; VI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 1
1046+
; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG]](s32)
1047+
; VI-NEXT: [[ASHR:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC1]], [[AND]](s16)
1048+
; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR3]](s32)
1049+
; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C4]]
1050+
; VI-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR]], 1
1051+
; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG1]](s32)
1052+
; VI-NEXT: [[ASHR1:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC3]], [[AND1]](s16)
1053+
; VI-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR4]](s32)
1054+
; VI-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC4]], [[C4]]
1055+
; VI-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR1]], 1
1056+
; VI-NEXT: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG2]](s32)
1057+
; VI-NEXT: [[ASHR2:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC5]], [[AND2]](s16)
1058+
; VI-NEXT: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR5]](s32)
1059+
; VI-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC6]], [[C4]]
1060+
; VI-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR2]], 1
1061+
; VI-NEXT: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG3]](s32)
1062+
; VI-NEXT: [[ASHR3:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC7]], [[AND3]](s16)
1063+
; VI-NEXT: [[AND4:%[0-9]+]]:_(s16) = G_AND [[ASHR]], [[C4]]
1064+
; VI-NEXT: [[AND5:%[0-9]+]]:_(s16) = G_AND [[ASHR1]], [[C4]]
1065+
; VI-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND5]], [[C4]](s16)
1066+
; VI-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND4]], [[SHL]]
1067+
; VI-NEXT: [[AND6:%[0-9]+]]:_(s16) = G_AND [[ASHR2]], [[C4]]
1068+
; VI-NEXT: [[C5:%[0-9]+]]:_(s16) = G_CONSTANT i16 2
1069+
; VI-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND6]], [[C5]](s16)
1070+
; VI-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[OR]], [[SHL1]]
1071+
; VI-NEXT: [[AND7:%[0-9]+]]:_(s16) = G_AND [[ASHR3]], [[C4]]
1072+
; VI-NEXT: [[C6:%[0-9]+]]:_(s16) = G_CONSTANT i16 3
1073+
; VI-NEXT: [[SHL2:%[0-9]+]]:_(s16) = G_SHL [[AND7]], [[C6]](s16)
1074+
; VI-NEXT: [[OR2:%[0-9]+]]:_(s16) = G_OR [[OR1]], [[SHL2]]
1075+
; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR2]](s16)
1076+
; VI-NEXT: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]
1077+
; VI-NEXT: $vgpr0 = COPY [[AND8]](s32)
1078+
;
1079+
; GFX9PLUS-LABEL: name: test_ashr_v4s1_v4s1
1080+
; GFX9PLUS: liveins: $vgpr0, $vgpr1
1081+
; GFX9PLUS-NEXT: {{ $}}
1082+
; GFX9PLUS-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0
1083+
; GFX9PLUS-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1
1084+
; GFX9PLUS-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
1085+
; GFX9PLUS-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s32)
1086+
; GFX9PLUS-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2
1087+
; GFX9PLUS-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C1]](s32)
1088+
; GFX9PLUS-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 3
1089+
; GFX9PLUS-NEXT: [[LSHR2:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C2]](s32)
1090+
; GFX9PLUS-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
1091+
; GFX9PLUS-NEXT: [[LSHR3:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C]](s32)
1092+
; GFX9PLUS-NEXT: [[LSHR4:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C1]](s32)
1093+
; GFX9PLUS-NEXT: [[LSHR5:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)
1094+
; GFX9PLUS-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)
1095+
; GFX9PLUS-NEXT: [[C4:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
1096+
; GFX9PLUS-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C4]]
1097+
; GFX9PLUS-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 1
1098+
; GFX9PLUS-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG]](s32)
1099+
; GFX9PLUS-NEXT: [[ASHR:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC1]], [[AND]](s16)
1100+
; GFX9PLUS-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR3]](s32)
1101+
; GFX9PLUS-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC2]], [[C4]]
1102+
; GFX9PLUS-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR]], 1
1103+
; GFX9PLUS-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG1]](s32)
1104+
; GFX9PLUS-NEXT: [[ASHR1:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC3]], [[AND1]](s16)
1105+
; GFX9PLUS-NEXT: [[TRUNC4:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR4]](s32)
1106+
; GFX9PLUS-NEXT: [[AND2:%[0-9]+]]:_(s16) = G_AND [[TRUNC4]], [[C4]]
1107+
; GFX9PLUS-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR1]], 1
1108+
; GFX9PLUS-NEXT: [[TRUNC5:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG2]](s32)
1109+
; GFX9PLUS-NEXT: [[ASHR2:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC5]], [[AND2]](s16)
1110+
; GFX9PLUS-NEXT: [[TRUNC6:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR5]](s32)
1111+
; GFX9PLUS-NEXT: [[AND3:%[0-9]+]]:_(s16) = G_AND [[TRUNC6]], [[C4]]
1112+
; GFX9PLUS-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR2]], 1
1113+
; GFX9PLUS-NEXT: [[TRUNC7:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG3]](s32)
1114+
; GFX9PLUS-NEXT: [[ASHR3:%[0-9]+]]:_(s16) = G_ASHR [[TRUNC7]], [[AND3]](s16)
1115+
; GFX9PLUS-NEXT: [[AND4:%[0-9]+]]:_(s16) = G_AND [[ASHR]], [[C4]]
1116+
; GFX9PLUS-NEXT: [[AND5:%[0-9]+]]:_(s16) = G_AND [[ASHR1]], [[C4]]
1117+
; GFX9PLUS-NEXT: [[SHL:%[0-9]+]]:_(s16) = G_SHL [[AND5]], [[C4]](s16)
1118+
; GFX9PLUS-NEXT: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND4]], [[SHL]]
1119+
; GFX9PLUS-NEXT: [[AND6:%[0-9]+]]:_(s16) = G_AND [[ASHR2]], [[C4]]
1120+
; GFX9PLUS-NEXT: [[C5:%[0-9]+]]:_(s16) = G_CONSTANT i16 2
1121+
; GFX9PLUS-NEXT: [[SHL1:%[0-9]+]]:_(s16) = G_SHL [[AND6]], [[C5]](s16)
1122+
; GFX9PLUS-NEXT: [[OR1:%[0-9]+]]:_(s16) = G_OR [[OR]], [[SHL1]]
1123+
; GFX9PLUS-NEXT: [[AND7:%[0-9]+]]:_(s16) = G_AND [[ASHR3]], [[C4]]
1124+
; GFX9PLUS-NEXT: [[C6:%[0-9]+]]:_(s16) = G_CONSTANT i16 3
1125+
; GFX9PLUS-NEXT: [[SHL2:%[0-9]+]]:_(s16) = G_SHL [[AND7]], [[C6]](s16)
1126+
; GFX9PLUS-NEXT: [[OR2:%[0-9]+]]:_(s16) = G_OR [[OR1]], [[SHL2]]
1127+
; GFX9PLUS-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR2]](s16)
1128+
; GFX9PLUS-NEXT: [[AND8:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C3]]
1129+
; GFX9PLUS-NEXT: $vgpr0 = COPY [[AND8]](s32)
1130+
%0:_(s32) = COPY $vgpr0
1131+
%1:_(s32) = COPY $vgpr1
1132+
%2:_(s4) = G_TRUNC %0
1133+
%3:_(s4) = G_TRUNC %1
1134+
%4:_(<4 x s1>) = G_BITCAST %2
1135+
%5:_(<4 x s1>) = G_BITCAST %3
1136+
%6:_(<4 x s1>) = G_ASHR %4, %5
1137+
%7:_(s4) = G_BITCAST %6
1138+
%8:_(s32) = G_ZEXT %7
1139+
$vgpr0 = COPY %8
1140+
...
1141+
9721142
---
9731143
name: test_ashr_v4s16_v4s16
9741144
body: |
@@ -2258,3 +2428,7 @@ body: |
22582428
%6:_(s96) = G_ANYEXT %5
22592429
$vgpr0_vgpr1_vgpr2 = COPY %6
22602430
...
2431+
## NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
2432+
# GFX9PLUS: {{.*}}
2433+
# SI: {{.*}}
2434+
# VI: {{.*}}

llvm/test/CodeGen/AMDGPU/widen-vector-shift.ll

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)