464 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck -check-prefix=SI %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=VI %s4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -run-pass=legalizer %s -o - | FileCheck -check-prefixes=GFX9 %s7 8---9name: test_abs_s3210body: |11 bb.0:12 liveins: $vgpr013 14 ; SI-LABEL: name: test_abs_s3215 ; SI: liveins: $vgpr016 ; SI-NEXT: {{ $}}17 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[COPY]]19 ; SI-NEXT: $vgpr0 = COPY [[ABS]](s32)20 ;21 ; VI-LABEL: name: test_abs_s3222 ; VI: liveins: $vgpr023 ; VI-NEXT: {{ $}}24 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr025 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[COPY]]26 ; VI-NEXT: $vgpr0 = COPY [[ABS]](s32)27 ;28 ; GFX9-LABEL: name: test_abs_s3229 ; GFX9: liveins: $vgpr030 ; GFX9-NEXT: {{ $}}31 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr032 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[COPY]]33 ; GFX9-NEXT: $vgpr0 = COPY [[ABS]](s32)34 %0:_(s32) = COPY $vgpr035 %1:_(s32) = G_ABS %036 $vgpr0 = COPY %137...38 39---40name: test_abs_s6441body: |42 bb.0:43 liveins: $vgpr0_vgpr144 45 ; SI-LABEL: name: test_abs_s6446 ; SI: liveins: $vgpr0_vgpr147 ; SI-NEXT: {{ $}}48 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr149 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6350 ; SI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32)51 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)52 ; SI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64)53 ; SI-NEXT: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]]54 ; SI-NEXT: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]]55 ; SI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32)56 ; SI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]]57 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[XOR]](s64)58 ;59 ; VI-LABEL: name: test_abs_s6460 ; VI: liveins: $vgpr0_vgpr161 ; VI-NEXT: {{ $}}62 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr163 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6364 ; VI-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32)65 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)66 ; VI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64)67 ; VI-NEXT: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]]68 ; VI-NEXT: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]]69 ; VI-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32)70 ; VI-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]]71 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[XOR]](s64)72 ;73 ; GFX9-LABEL: name: test_abs_s6474 ; GFX9: liveins: $vgpr0_vgpr175 ; GFX9-NEXT: {{ $}}76 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr177 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 6378 ; GFX9-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[C]](s32)79 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](s64)80 ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[ASHR]](s64)81 ; GFX9-NEXT: [[UADDO:%[0-9]+]]:_(s32), [[UADDO1:%[0-9]+]]:_(s1) = G_UADDO [[UV]], [[UV2]]82 ; GFX9-NEXT: [[UADDE:%[0-9]+]]:_(s32), [[UADDE1:%[0-9]+]]:_(s1) = G_UADDE [[UV1]], [[UV3]], [[UADDO1]]83 ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[UADDO]](s32), [[UADDE]](s32)84 ; GFX9-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[MV]], [[ASHR]]85 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[XOR]](s64)86 %0:_(s64) = COPY $vgpr0_vgpr187 %1:_(s64) = G_ABS %088 $vgpr0_vgpr1 = COPY %189...90 91---92name: test_abs_s1693body: |94 bb.0:95 liveins: $vgpr0, $vgpr196 97 ; SI-LABEL: name: test_abs_s1698 ; SI: liveins: $vgpr0, $vgpr199 ; SI-NEXT: {{ $}}100 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0101 ; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 16102 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]103 ; SI-NEXT: $vgpr0 = COPY [[ABS]](s32)104 ;105 ; VI-LABEL: name: test_abs_s16106 ; VI: liveins: $vgpr0, $vgpr1107 ; VI-NEXT: {{ $}}108 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0109 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)110 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]111 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS]](s16)112 ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)113 ;114 ; GFX9-LABEL: name: test_abs_s16115 ; GFX9: liveins: $vgpr0, $vgpr1116 ; GFX9-NEXT: {{ $}}117 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0118 ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)119 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]120 ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS]](s16)121 ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)122 %0:_(s32) = COPY $vgpr0123 %1:_(s16) = G_TRUNC %0124 %2:_(s16) = G_ABS %1125 %3:_(s32) = G_ANYEXT %2126 $vgpr0 = COPY %3127...128 129---130name: test_abs_s8131body: |132 bb.0:133 liveins: $vgpr0134 135 ; SI-LABEL: name: test_abs_s8136 ; SI: liveins: $vgpr0137 ; SI-NEXT: {{ $}}138 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0139 ; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8140 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]141 ; SI-NEXT: $vgpr0 = COPY [[ABS]](s32)142 ;143 ; VI-LABEL: name: test_abs_s8144 ; VI: liveins: $vgpr0145 ; VI-NEXT: {{ $}}146 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0147 ; VI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8148 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG]](s32)149 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]150 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS]](s16)151 ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)152 ;153 ; GFX9-LABEL: name: test_abs_s8154 ; GFX9: liveins: $vgpr0155 ; GFX9-NEXT: {{ $}}156 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0157 ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 8158 ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[SEXT_INREG]](s32)159 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]160 ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS]](s16)161 ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)162 %0:_(s32) = COPY $vgpr0163 %1:_(s8) = G_TRUNC %0164 %2:_(s8) = G_ABS %1165 %3:_(s32) = G_ANYEXT %2166 $vgpr0 = COPY %3167...168 169---170name: test_abs_s17171body: |172 bb.0:173 liveins: $vgpr0174 175 ; SI-LABEL: name: test_abs_s17176 ; SI: liveins: $vgpr0177 ; SI-NEXT: {{ $}}178 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0179 ; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 17180 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]181 ; SI-NEXT: $vgpr0 = COPY [[ABS]](s32)182 ;183 ; VI-LABEL: name: test_abs_s17184 ; VI: liveins: $vgpr0185 ; VI-NEXT: {{ $}}186 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0187 ; VI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 17188 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]189 ; VI-NEXT: $vgpr0 = COPY [[ABS]](s32)190 ;191 ; GFX9-LABEL: name: test_abs_s17192 ; GFX9: liveins: $vgpr0193 ; GFX9-NEXT: {{ $}}194 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0195 ; GFX9-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[COPY]], 17196 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]197 ; GFX9-NEXT: $vgpr0 = COPY [[ABS]](s32)198 %0:_(s32) = COPY $vgpr0199 %1:_(s17) = G_TRUNC %0200 %2:_(s17) = G_ABS %1201 %3:_(s32) = G_ANYEXT %2202 $vgpr0 = COPY %3203...204 205---206name: test_abs_v2s32207body: |208 bb.0:209 liveins: $vgpr0_vgpr1210 211 ; SI-LABEL: name: test_abs_v2s32212 ; SI: liveins: $vgpr0_vgpr1213 ; SI-NEXT: {{ $}}214 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1215 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)216 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]217 ; SI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]218 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32)219 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)220 ;221 ; VI-LABEL: name: test_abs_v2s32222 ; VI: liveins: $vgpr0_vgpr1223 ; VI-NEXT: {{ $}}224 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1225 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)226 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]227 ; VI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]228 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32)229 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)230 ;231 ; GFX9-LABEL: name: test_abs_v2s32232 ; GFX9: liveins: $vgpr0_vgpr1233 ; GFX9-NEXT: {{ $}}234 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1235 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)236 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]237 ; GFX9-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]238 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32)239 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)240 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1241 %1:_(<2 x s32>) = G_ABS %0242 $vgpr0_vgpr1 = COPY %1243...244 245---246name: test_abs_v3s32247body: |248 bb.0:249 liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5250 251 ; SI-LABEL: name: test_abs_v3s32252 ; SI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5253 ; SI-NEXT: {{ $}}254 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2255 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)256 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]257 ; SI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]258 ; SI-NEXT: [[ABS2:%[0-9]+]]:_(s32) = G_ABS [[UV2]]259 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32), [[ABS2]](s32)260 ; SI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)261 ;262 ; VI-LABEL: name: test_abs_v3s32263 ; VI: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5264 ; VI-NEXT: {{ $}}265 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2266 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)267 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]268 ; VI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]269 ; VI-NEXT: [[ABS2:%[0-9]+]]:_(s32) = G_ABS [[UV2]]270 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32), [[ABS2]](s32)271 ; VI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)272 ;273 ; GFX9-LABEL: name: test_abs_v3s32274 ; GFX9: liveins: $vgpr0_vgpr1_vgpr2, $vgpr3_vgpr4_vgpr5275 ; GFX9-NEXT: {{ $}}276 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2277 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)278 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[UV]]279 ; GFX9-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[UV1]]280 ; GFX9-NEXT: [[ABS2:%[0-9]+]]:_(s32) = G_ABS [[UV2]]281 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32), [[ABS2]](s32)282 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)283 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2284 %1:_(<3 x s32>) = G_ABS %0285 $vgpr0_vgpr1_vgpr2 = COPY %1286...287 288---289name: test_abs_v2s16290body: |291 bb.0:292 liveins: $vgpr0293 294 ; SI-LABEL: name: test_abs_v2s16295 ; SI: liveins: $vgpr0296 ; SI-NEXT: {{ $}}297 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0298 ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)299 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16300 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)301 ; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[BITCAST]], 16302 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]303 ; SI-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR]], 16304 ; SI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG1]]305 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ABS1]], [[C]](s32)306 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ABS]], [[SHL]]307 ; SI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)308 ; SI-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)309 ;310 ; VI-LABEL: name: test_abs_v2s16311 ; VI: liveins: $vgpr0312 ; VI-NEXT: {{ $}}313 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0314 ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)315 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)316 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16317 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)318 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)319 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]320 ; VI-NEXT: [[ABS1:%[0-9]+]]:_(s16) = G_ABS [[TRUNC1]]321 ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ABS]](s16)322 ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[ABS1]](s16)323 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C]](s32)324 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL]]325 ; VI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)326 ; VI-NEXT: $vgpr0 = COPY [[BITCAST1]](<2 x s16>)327 ;328 ; GFX9-LABEL: name: test_abs_v2s16329 ; GFX9: liveins: $vgpr0330 ; GFX9-NEXT: {{ $}}331 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0332 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(<2 x s16>) = G_ABS [[COPY]]333 ; GFX9-NEXT: $vgpr0 = COPY [[ABS]](<2 x s16>)334 %0:_(<2 x s16>) = COPY $vgpr0335 %1:_(<2 x s16>) = G_ABS %0336 $vgpr0 = COPY %1337...338 339---340name: test_abs_v3s16341body: |342 bb.0:343 liveins: $vgpr0344 345 ; SI-LABEL: name: test_abs_v3s16346 ; SI: liveins: $vgpr0347 ; SI-NEXT: {{ $}}348 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0349 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[C]]350 ; SI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[C]]351 ; SI-NEXT: [[ABS2:%[0-9]+]]:_(s32) = G_ABS [[C]]352 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ABS]](s32), [[ABS1]](s32), [[ABS2]](s32)353 ; SI-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)354 ;355 ; VI-LABEL: name: test_abs_v3s16356 ; VI: liveins: $vgpr0357 ; VI-NEXT: {{ $}}358 ; VI-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF359 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[DEF]]360 ; VI-NEXT: [[ABS1:%[0-9]+]]:_(s16) = G_ABS [[DEF]]361 ; VI-NEXT: [[ABS2:%[0-9]+]]:_(s16) = G_ABS [[DEF]]362 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS]](s16)363 ; VI-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS1]](s16)364 ; VI-NEXT: [[ANYEXT2:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS2]](s16)365 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[ANYEXT]](s32), [[ANYEXT1]](s32), [[ANYEXT2]](s32)366 ; VI-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)367 ;368 ; GFX9-LABEL: name: test_abs_v3s16369 ; GFX9: liveins: $vgpr0370 ; GFX9-NEXT: {{ $}}371 ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF372 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[DEF]](s16), [[DEF]](s16)373 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(<2 x s16>) = G_ABS [[BUILD_VECTOR]]374 ; GFX9-NEXT: [[ABS1:%[0-9]+]]:_(s16) = G_ABS [[DEF]]375 ; GFX9-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[ABS]](<2 x s16>)376 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16377 ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)378 ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[ABS1]](s16)379 ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[BITCAST]](s32), [[LSHR]](s32), [[ANYEXT]](s32)380 ; GFX9-NEXT: S_NOP 0, implicit [[BUILD_VECTOR1]](<3 x s32>)381 %0:_(<3 x s16>) = G_IMPLICIT_DEF382 %1:_(<3 x s16>) = G_ABS %0383 %2:_(<3 x s32>) = G_ANYEXT %1384 S_NOP 0, implicit %2385...386 387---388name: test_abs_v4s16389body: |390 bb.0:391 liveins: $vgpr0_vgpr1392 393 ; SI-LABEL: name: test_abs_v4s16394 ; SI: liveins: $vgpr0_vgpr1395 ; SI-NEXT: {{ $}}396 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1397 ; SI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)398 ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)399 ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16400 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)401 ; SI-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)402 ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)403 ; SI-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[BITCAST]], 16404 ; SI-NEXT: [[ABS:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG]]405 ; SI-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR]], 16406 ; SI-NEXT: [[ABS1:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG1]]407 ; SI-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s32) = G_SEXT_INREG [[BITCAST1]], 16408 ; SI-NEXT: [[ABS2:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG2]]409 ; SI-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LSHR1]], 16410 ; SI-NEXT: [[ABS3:%[0-9]+]]:_(s32) = G_ABS [[SEXT_INREG3]]411 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ABS1]], [[C]](s32)412 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ABS]], [[SHL]]413 ; SI-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)414 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[ABS3]], [[C]](s32)415 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[ABS2]], [[SHL1]]416 ; SI-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)417 ; SI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)418 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)419 ;420 ; VI-LABEL: name: test_abs_v4s16421 ; VI: liveins: $vgpr0_vgpr1422 ; VI-NEXT: {{ $}}423 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1424 ; VI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)425 ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)426 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)427 ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16428 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)429 ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)430 ; VI-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)431 ; VI-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32)432 ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST1]], [[C]](s32)433 ; VI-NEXT: [[TRUNC3:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR1]](s32)434 ; VI-NEXT: [[ABS:%[0-9]+]]:_(s16) = G_ABS [[TRUNC]]435 ; VI-NEXT: [[ABS1:%[0-9]+]]:_(s16) = G_ABS [[TRUNC1]]436 ; VI-NEXT: [[ABS2:%[0-9]+]]:_(s16) = G_ABS [[TRUNC2]]437 ; VI-NEXT: [[ABS3:%[0-9]+]]:_(s16) = G_ABS [[TRUNC3]]438 ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[ABS]](s16)439 ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s32) = G_ZEXT [[ABS1]](s16)440 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[ZEXT1]], [[C]](s32)441 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[ZEXT]], [[SHL]]442 ; VI-NEXT: [[BITCAST2:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)443 ; VI-NEXT: [[ZEXT2:%[0-9]+]]:_(s32) = G_ZEXT [[ABS2]](s16)444 ; VI-NEXT: [[ZEXT3:%[0-9]+]]:_(s32) = G_ZEXT [[ABS3]](s16)445 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[ZEXT3]], [[C]](s32)446 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[ZEXT2]], [[SHL1]]447 ; VI-NEXT: [[BITCAST3:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)448 ; VI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST2]](<2 x s16>), [[BITCAST3]](<2 x s16>)449 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)450 ;451 ; GFX9-LABEL: name: test_abs_v4s16452 ; GFX9: liveins: $vgpr0_vgpr1453 ; GFX9-NEXT: {{ $}}454 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1455 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)456 ; GFX9-NEXT: [[ABS:%[0-9]+]]:_(<2 x s16>) = G_ABS [[UV]]457 ; GFX9-NEXT: [[ABS1:%[0-9]+]]:_(<2 x s16>) = G_ABS [[UV1]]458 ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[ABS]](<2 x s16>), [[ABS1]](<2 x s16>)459 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)460 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1461 %1:_(<4 x s16>) = G_ABS %0462 $vgpr0_vgpr1 = COPY %1463...464