679 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-machineinstrs --stress-regalloc=2 -start-before=greedy -stop-after=virtregrewriter -o - %s | FileCheck -check-prefix=GCN %s3 4---5name: test_remat_s_mov_b326tracksRegLiveness: true7body: |8 bb.0:9 ; GCN-LABEL: name: test_remat_s_mov_b3210 ; GCN: renamable $sgpr0 = S_MOV_B32 111 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 212 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr013 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr114 ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 315 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr016 ; GCN-NEXT: S_ENDPGM 017 %0:sreg_32 = S_MOV_B32 118 %1:sreg_32 = S_MOV_B32 219 %2:sreg_32 = S_MOV_B32 320 S_NOP 0, implicit %021 S_NOP 0, implicit %122 S_NOP 0, implicit %223 S_ENDPGM 024...25---26name: test_no_remat_s_mov_b32_impuse_exec27tracksRegLiveness: true28machineFunctionInfo:29 stackPtrOffsetReg: $sgpr3230body: |31 bb.0:32 ; GCN-LABEL: name: test_no_remat_s_mov_b32_impuse_exec33 ; GCN: $exec = IMPLICIT_DEF34 ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 1, implicit $exec35 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.1, addrspace 5)36 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 2, implicit $exec37 ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 3, implicit $exec38 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)39 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.1, addrspace 5)40 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr041 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr142 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)43 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr044 ; GCN-NEXT: S_ENDPGM 045 $exec = IMPLICIT_DEF46 %0:sreg_32 = S_MOV_B32 1, implicit $exec47 %1:sreg_32 = S_MOV_B32 2, implicit $exec48 %2:sreg_32 = S_MOV_B32 3, implicit $exec49 S_NOP 0, implicit %050 S_NOP 0, implicit %151 S_NOP 0, implicit %252 S_ENDPGM 053...54# The liverange of %0 covers a point of rematerialization, source value is55# available.56---57name: test_remat_s_mov_b32_vreg_src_long_lr58tracksRegLiveness: true59machineFunctionInfo:60 stackPtrOffsetReg: $sgpr3261body: |62 bb.0:63 ; GCN-LABEL: name: test_remat_s_mov_b32_vreg_src_long_lr64 ; GCN: renamable $sgpr0 = IMPLICIT_DEF65 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr066 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr167 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr068 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr169 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 renamable $sgpr070 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr171 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr072 ; GCN-NEXT: S_ENDPGM 073 %0:sreg_32 = IMPLICIT_DEF74 %1:sreg_32 = S_MOV_B32 %0:sreg_3275 %2:sreg_32 = S_MOV_B32 %0:sreg_3276 %3:sreg_32 = S_MOV_B32 %0:sreg_3277 S_NOP 0, implicit %178 S_NOP 0, implicit %279 S_NOP 0, implicit %380 S_NOP 0, implicit %081 S_ENDPGM 082...83# The liverange of %0 does not cover a point of rematerialization, source value is84# unavailable and we do not want to artificially extend the liverange.85---86name: test_no_remat_s_mov_b32_vreg_src_short_lr87tracksRegLiveness: true88machineFunctionInfo:89 stackPtrOffsetReg: $sgpr3290body: |91 bb.0:92 ; GCN-LABEL: name: test_no_remat_s_mov_b32_vreg_src_short_lr93 ; GCN: renamable $sgpr0 = IMPLICIT_DEF94 ; GCN-NEXT: renamable $sgpr1 = S_MOV_B32 killed renamable $sgpr095 ; GCN-NEXT: renamable $sgpr0 = IMPLICIT_DEF96 ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 killed renamable $sgpr097 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.1, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.1, addrspace 5)98 ; GCN-NEXT: renamable $sgpr0 = IMPLICIT_DEF99 ; GCN-NEXT: renamable $sgpr0 = S_MOV_B32 killed renamable $sgpr0100 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.0, implicit $exec, implicit $sgpr32 :: (store (s32) into %stack.0, addrspace 5)101 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1102 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.1, addrspace 5)103 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0104 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sgpr32 :: (load (s32) from %stack.0, addrspace 5)105 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0106 ; GCN-NEXT: S_ENDPGM 0107 %0:sreg_32 = IMPLICIT_DEF108 %1:sreg_32 = S_MOV_B32 %0:sreg_32109 %2:sreg_32 = S_MOV_B32 %0:sreg_32110 %3:sreg_32 = S_MOV_B32 %0:sreg_32111 S_NOP 0, implicit %1112 S_NOP 0, implicit %2113 S_NOP 0, implicit %3114 S_ENDPGM 0115...116---117name: test_remat_s_mov_b64118tracksRegLiveness: true119body: |120 bb.0:121 ; GCN-LABEL: name: test_remat_s_mov_b64122 ; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64 1123 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_MOV_B64 2124 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1125 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3126 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_MOV_B64 3127 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1128 ; GCN-NEXT: S_ENDPGM 0129 %0:sgpr_64 = S_MOV_B64 1130 %1:sgpr_64 = S_MOV_B64 2131 %2:sgpr_64 = S_MOV_B64 3132 S_NOP 0, implicit %0133 S_NOP 0, implicit %1134 S_NOP 0, implicit %2135 S_ENDPGM 0136...137---138name: test_remat_s_brev_b32139tracksRegLiveness: true140body: |141 bb.0:142 ; GCN-LABEL: name: test_remat_s_brev_b32143 ; GCN: renamable $sgpr0 = S_BREV_B32 1144 ; GCN-NEXT: renamable $sgpr1 = S_BREV_B32 2145 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0146 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1147 ; GCN-NEXT: renamable $sgpr0 = S_BREV_B32 3148 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0149 ; GCN-NEXT: S_ENDPGM 0150 %0:sreg_32 = S_BREV_B32 1151 %1:sreg_32 = S_BREV_B32 2152 %2:sreg_32 = S_BREV_B32 3153 S_NOP 0, implicit %0154 S_NOP 0, implicit %1155 S_NOP 0, implicit %2156 S_ENDPGM 0157...158---159name: test_remat_s_brev_b64160tracksRegLiveness: true161body: |162 bb.0:163 ; GCN-LABEL: name: test_remat_s_brev_b64164 ; GCN: renamable $sgpr0_sgpr1 = S_BREV_B64 1165 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BREV_B64 2166 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1167 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3168 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BREV_B64 3169 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1170 ; GCN-NEXT: S_ENDPGM 0171 %0:sgpr_64 = S_BREV_B64 1172 %1:sgpr_64 = S_BREV_B64 2173 %2:sgpr_64 = S_BREV_B64 3174 S_NOP 0, implicit %0175 S_NOP 0, implicit %1176 S_NOP 0, implicit %2177 S_ENDPGM 0178...179---180name: test_remat_s_ff0_i32_b32181tracksRegLiveness: true182body: |183 bb.0:184 ; GCN-LABEL: name: test_remat_s_ff0_i32_b32185 ; GCN: renamable $sgpr0 = S_FF0_I32_B32 1186 ; GCN-NEXT: renamable $sgpr1 = S_FF0_I32_B32 2187 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0188 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1189 ; GCN-NEXT: renamable $sgpr0 = S_FF0_I32_B32 3190 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0191 ; GCN-NEXT: S_ENDPGM 0192 %0:sreg_32 = S_FF0_I32_B32 1193 %1:sreg_32 = S_FF0_I32_B32 2194 %2:sreg_32 = S_FF0_I32_B32 3195 S_NOP 0, implicit %0196 S_NOP 0, implicit %1197 S_NOP 0, implicit %2198 S_ENDPGM 0199...200---201name: test_remat_s_ff1_i32_b32202tracksRegLiveness: true203body: |204 bb.0:205 ; GCN-LABEL: name: test_remat_s_ff1_i32_b32206 ; GCN: renamable $sgpr0 = S_FF1_I32_B32 1207 ; GCN-NEXT: renamable $sgpr1 = S_FF1_I32_B32 2208 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0209 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1210 ; GCN-NEXT: renamable $sgpr0 = S_FF1_I32_B32 3211 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0212 ; GCN-NEXT: S_ENDPGM 0213 %0:sreg_32 = S_FF1_I32_B32 1214 %1:sreg_32 = S_FF1_I32_B32 2215 %2:sreg_32 = S_FF1_I32_B32 3216 S_NOP 0, implicit %0217 S_NOP 0, implicit %1218 S_NOP 0, implicit %2219 S_ENDPGM 0220...221---222name: test_remat_s_ff0_i32_b64223tracksRegLiveness: true224body: |225 bb.0:226 ; GCN-LABEL: name: test_remat_s_ff0_i32_b64227 ; GCN: renamable $sgpr0 = S_FF0_I32_B64 1228 ; GCN-NEXT: renamable $sgpr1 = S_FF0_I32_B64 2229 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0230 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1231 ; GCN-NEXT: renamable $sgpr0 = S_FF0_I32_B64 3232 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0233 ; GCN-NEXT: S_ENDPGM 0234 %0:sreg_32 = S_FF0_I32_B64 1235 %1:sreg_32 = S_FF0_I32_B64 2236 %2:sreg_32 = S_FF0_I32_B64 3237 S_NOP 0, implicit %0238 S_NOP 0, implicit %1239 S_NOP 0, implicit %2240 S_ENDPGM 0241...242---243name: test_remat_s_ff1_i32_b64244tracksRegLiveness: true245body: |246 bb.0:247 ; GCN-LABEL: name: test_remat_s_ff1_i32_b64248 ; GCN: renamable $sgpr0 = S_FF1_I32_B64 1249 ; GCN-NEXT: renamable $sgpr1 = S_FF1_I32_B64 2250 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0251 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1252 ; GCN-NEXT: renamable $sgpr0 = S_FF1_I32_B64 3253 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0254 ; GCN-NEXT: S_ENDPGM 0255 %0:sreg_32 = S_FF1_I32_B64 1256 %1:sreg_32 = S_FF1_I32_B64 2257 %2:sreg_32 = S_FF1_I32_B64 3258 S_NOP 0, implicit %0259 S_NOP 0, implicit %1260 S_NOP 0, implicit %2261 S_ENDPGM 0262...263---264name: test_remat_s_flbit_i32_b32265tracksRegLiveness: true266body: |267 bb.0:268 ; GCN-LABEL: name: test_remat_s_flbit_i32_b32269 ; GCN: renamable $sgpr0 = S_FLBIT_I32_B32 1270 ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_B32 2271 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0272 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1273 ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_B32 3274 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0275 ; GCN-NEXT: S_ENDPGM 0276 %0:sreg_32 = S_FLBIT_I32_B32 1277 %1:sreg_32 = S_FLBIT_I32_B32 2278 %2:sreg_32 = S_FLBIT_I32_B32 3279 S_NOP 0, implicit %0280 S_NOP 0, implicit %1281 S_NOP 0, implicit %2282 S_ENDPGM 0283...284---285name: test_remat_s_flbit_i32_b64286tracksRegLiveness: true287body: |288 bb.0:289 ; GCN-LABEL: name: test_remat_s_flbit_i32_b64290 ; GCN: renamable $sgpr0 = S_FLBIT_I32_B64 1291 ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_B64 2292 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0293 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1294 ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_B64 3295 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0296 ; GCN-NEXT: S_ENDPGM 0297 %0:sreg_32 = S_FLBIT_I32_B64 1298 %1:sreg_32 = S_FLBIT_I32_B64 2299 %2:sreg_32 = S_FLBIT_I32_B64 3300 S_NOP 0, implicit %0301 S_NOP 0, implicit %1302 S_NOP 0, implicit %2303 S_ENDPGM 0304...305---306name: test_remat_s_flbit_i32307tracksRegLiveness: true308body: |309 bb.0:310 ; GCN-LABEL: name: test_remat_s_flbit_i32311 ; GCN: renamable $sgpr0 = S_FLBIT_I32 1312 ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32 2313 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0314 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1315 ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32 3316 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0317 ; GCN-NEXT: S_ENDPGM 0318 %0:sreg_32 = S_FLBIT_I32 1319 %1:sreg_32 = S_FLBIT_I32 2320 %2:sreg_32 = S_FLBIT_I32 3321 S_NOP 0, implicit %0322 S_NOP 0, implicit %1323 S_NOP 0, implicit %2324 S_ENDPGM 0325...326---327name: test_remat_s_flbit_i32_i64328tracksRegLiveness: true329body: |330 bb.0:331 ; GCN-LABEL: name: test_remat_s_flbit_i32_i64332 ; GCN: renamable $sgpr0 = S_FLBIT_I32_I64 1333 ; GCN-NEXT: renamable $sgpr1 = S_FLBIT_I32_I64 2334 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0335 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1336 ; GCN-NEXT: renamable $sgpr0 = S_FLBIT_I32_I64 3337 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0338 ; GCN-NEXT: S_ENDPGM 0339 %0:sreg_32 = S_FLBIT_I32_I64 1340 %1:sreg_32 = S_FLBIT_I32_I64 2341 %2:sreg_32 = S_FLBIT_I32_I64 3342 S_NOP 0, implicit %0343 S_NOP 0, implicit %1344 S_NOP 0, implicit %2345 S_ENDPGM 0346...347---348name: test_remat_s_sext_i32_i8349tracksRegLiveness: true350body: |351 bb.0:352 ; GCN-LABEL: name: test_remat_s_sext_i32_i8353 ; GCN: renamable $sgpr0 = S_SEXT_I32_I8 1354 ; GCN-NEXT: renamable $sgpr1 = S_SEXT_I32_I8 2355 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0356 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1357 ; GCN-NEXT: renamable $sgpr0 = S_SEXT_I32_I8 3358 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0359 ; GCN-NEXT: S_ENDPGM 0360 %0:sreg_32 = S_SEXT_I32_I8 1361 %1:sreg_32 = S_SEXT_I32_I8 2362 %2:sreg_32 = S_SEXT_I32_I8 3363 S_NOP 0, implicit %0364 S_NOP 0, implicit %1365 S_NOP 0, implicit %2366 S_ENDPGM 0367...368---369name: test_remat_s_sext_i32_i16370tracksRegLiveness: true371body: |372 bb.0:373 ; GCN-LABEL: name: test_remat_s_sext_i32_i16374 ; GCN: renamable $sgpr0 = S_SEXT_I32_I16 1375 ; GCN-NEXT: renamable $sgpr1 = S_SEXT_I32_I16 2376 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0377 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1378 ; GCN-NEXT: renamable $sgpr0 = S_SEXT_I32_I16 3379 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0380 ; GCN-NEXT: S_ENDPGM 0381 %0:sreg_32 = S_SEXT_I32_I16 1382 %1:sreg_32 = S_SEXT_I32_I16 2383 %2:sreg_32 = S_SEXT_I32_I16 3384 S_NOP 0, implicit %0385 S_NOP 0, implicit %1386 S_NOP 0, implicit %2387 S_ENDPGM 0388...389---390name: test_remat_s_bitreplicate_b64_b32391tracksRegLiveness: true392body: |393 bb.0:394 ; GCN-LABEL: name: test_remat_s_bitreplicate_b64_b32395 ; GCN: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 1396 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BITREPLICATE_B64_B32 2397 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1398 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3399 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BITREPLICATE_B64_B32 3400 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1401 ; GCN-NEXT: S_ENDPGM 0402 %0:sgpr_64 = S_BITREPLICATE_B64_B32 1403 %1:sgpr_64 = S_BITREPLICATE_B64_B32 2404 %2:sgpr_64 = S_BITREPLICATE_B64_B32 3405 S_NOP 0, implicit %0406 S_NOP 0, implicit %1407 S_NOP 0, implicit %2408 S_ENDPGM 0409...410---411name: test_remat_s_bfm_b32412tracksRegLiveness: true413body: |414 bb.0:415 ; GCN-LABEL: name: test_remat_s_bfm_b32416 ; GCN: renamable $sgpr0 = S_BFM_B32 1, 1417 ; GCN-NEXT: renamable $sgpr1 = S_BFM_B32 2, 2418 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0419 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1420 ; GCN-NEXT: renamable $sgpr0 = S_BFM_B32 3, 3421 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0422 ; GCN-NEXT: S_ENDPGM 0423 %0:sreg_32 = S_BFM_B32 1, 1424 %1:sreg_32 = S_BFM_B32 2, 2425 %2:sreg_32 = S_BFM_B32 3, 3426 S_NOP 0, implicit %0427 S_NOP 0, implicit %1428 S_NOP 0, implicit %2429 S_ENDPGM 0430...431---432name: test_remat_s_bfm_b64433tracksRegLiveness: true434body: |435 bb.0:436 ; GCN-LABEL: name: test_remat_s_bfm_b64437 ; GCN: renamable $sgpr0_sgpr1 = S_BFM_B64 1, 1438 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_BFM_B64 2, 2439 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1440 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3441 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_BFM_B64 3, 3442 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1443 ; GCN-NEXT: S_ENDPGM 0444 %0:sgpr_64 = S_BFM_B64 1, 1445 %1:sgpr_64 = S_BFM_B64 2, 2446 %2:sgpr_64 = S_BFM_B64 3, 3447 S_NOP 0, implicit %0448 S_NOP 0, implicit %1449 S_NOP 0, implicit %2450 S_ENDPGM 0451...452---453name: test_remat_s_mul_i32454tracksRegLiveness: true455body: |456 bb.0:457 ; GCN-LABEL: name: test_remat_s_mul_i32458 ; GCN: renamable $sgpr0 = S_MUL_I32 1, 1459 ; GCN-NEXT: renamable $sgpr1 = S_MUL_I32 2, 2460 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0461 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1462 ; GCN-NEXT: renamable $sgpr0 = S_MUL_I32 3, 3463 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0464 ; GCN-NEXT: S_ENDPGM 0465 %0:sreg_32 = S_MUL_I32 1, 1466 %1:sreg_32 = S_MUL_I32 2, 2467 %2:sreg_32 = S_MUL_I32 3, 3468 S_NOP 0, implicit %0469 S_NOP 0, implicit %1470 S_NOP 0, implicit %2471 S_ENDPGM 0472...473---474name: test_remat_s_mul_hi_i32475tracksRegLiveness: true476body: |477 bb.0:478 ; GCN-LABEL: name: test_remat_s_mul_hi_i32479 ; GCN: renamable $sgpr0 = S_MUL_HI_I32 1, 1480 ; GCN-NEXT: renamable $sgpr1 = S_MUL_HI_I32 2, 2481 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0482 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1483 ; GCN-NEXT: renamable $sgpr0 = S_MUL_HI_I32 3, 3484 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0485 ; GCN-NEXT: S_ENDPGM 0486 %0:sreg_32 = S_MUL_HI_I32 1, 1487 %1:sreg_32 = S_MUL_HI_I32 2, 2488 %2:sreg_32 = S_MUL_HI_I32 3, 3489 S_NOP 0, implicit %0490 S_NOP 0, implicit %1491 S_NOP 0, implicit %2492 S_ENDPGM 0493...494---495name: test_remat_s_mul_hi_u32496tracksRegLiveness: true497body: |498 bb.0:499 ; GCN-LABEL: name: test_remat_s_mul_hi_u32500 ; GCN: renamable $sgpr0 = S_MUL_HI_U32 1, 1501 ; GCN-NEXT: renamable $sgpr1 = S_MUL_HI_U32 2, 2502 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0503 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1504 ; GCN-NEXT: renamable $sgpr0 = S_MUL_HI_U32 3, 3505 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0506 ; GCN-NEXT: S_ENDPGM 0507 %0:sreg_32 = S_MUL_HI_U32 1, 1508 %1:sreg_32 = S_MUL_HI_U32 2, 2509 %2:sreg_32 = S_MUL_HI_U32 3, 3510 S_NOP 0, implicit %0511 S_NOP 0, implicit %1512 S_NOP 0, implicit %2513 S_ENDPGM 0514...515---516name: test_remat_s_pack_ll_b32_b16517tracksRegLiveness: true518body: |519 bb.0:520 ; GCN-LABEL: name: test_remat_s_pack_ll_b32_b16521 ; GCN: renamable $sgpr0 = S_PACK_LL_B32_B16 1, 1522 ; GCN-NEXT: renamable $sgpr1 = S_PACK_LL_B32_B16 2, 2523 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0524 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1525 ; GCN-NEXT: renamable $sgpr0 = S_PACK_LL_B32_B16 3, 3526 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0527 ; GCN-NEXT: S_ENDPGM 0528 %0:sreg_32 = S_PACK_LL_B32_B16 1, 1529 %1:sreg_32 = S_PACK_LL_B32_B16 2, 2530 %2:sreg_32 = S_PACK_LL_B32_B16 3, 3531 S_NOP 0, implicit %0532 S_NOP 0, implicit %1533 S_NOP 0, implicit %2534 S_ENDPGM 0535...536---537name: test_remat_s_pack_lh_b32_b16538tracksRegLiveness: true539body: |540 bb.0:541 ; GCN-LABEL: name: test_remat_s_pack_lh_b32_b16542 ; GCN: renamable $sgpr0 = S_PACK_LH_B32_B16 1, 1543 ; GCN-NEXT: renamable $sgpr1 = S_PACK_LH_B32_B16 2, 2544 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0545 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1546 ; GCN-NEXT: renamable $sgpr0 = S_PACK_LH_B32_B16 3, 3547 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0548 ; GCN-NEXT: S_ENDPGM 0549 %0:sreg_32 = S_PACK_LH_B32_B16 1, 1550 %1:sreg_32 = S_PACK_LH_B32_B16 2, 2551 %2:sreg_32 = S_PACK_LH_B32_B16 3, 3552 S_NOP 0, implicit %0553 S_NOP 0, implicit %1554 S_NOP 0, implicit %2555 S_ENDPGM 0556...557---558name: test_remat_s_pack_hh_b32_b16559tracksRegLiveness: true560body: |561 bb.0:562 ; GCN-LABEL: name: test_remat_s_pack_hh_b32_b16563 ; GCN: renamable $sgpr0 = S_PACK_HH_B32_B16 1, 1564 ; GCN-NEXT: renamable $sgpr1 = S_PACK_HH_B32_B16 2, 2565 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0566 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr1567 ; GCN-NEXT: renamable $sgpr0 = S_PACK_HH_B32_B16 3, 3568 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0569 ; GCN-NEXT: S_ENDPGM 0570 %0:sreg_32 = S_PACK_HH_B32_B16 1, 1571 %1:sreg_32 = S_PACK_HH_B32_B16 2, 2572 %2:sreg_32 = S_PACK_HH_B32_B16 3, 3573 S_NOP 0, implicit %0574 S_NOP 0, implicit %1575 S_NOP 0, implicit %2576 S_ENDPGM 0577...578 579---580name: test_remat_s_getpc_b64581tracksRegLiveness: true582body: |583 bb.0:584 585 ; GCN-LABEL: name: test_remat_s_getpc_b64586 ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo587 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64_pseudo588 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1589 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3590 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo591 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1592 ; GCN-NEXT: S_ENDPGM 0593 %0:sgpr_64 = S_GETPC_B64_pseudo594 %1:sgpr_64 = S_GETPC_B64_pseudo595 %2:sgpr_64 = S_GETPC_B64_pseudo596 S_NOP 0, implicit %0597 S_NOP 0, implicit %1598 S_NOP 0, implicit %2599 S_ENDPGM 0600...601 602---603name: test_remat_s_getpc_b64_2604tracksRegLiveness: true605body: |606 bb.0:607 608 ; GCN-LABEL: name: test_remat_s_getpc_b64_2609 ; GCN: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo610 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_GETPC_B64_pseudo611 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.3, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.3, addrspace 5)612 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.0, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.0, addrspace 5)613 ; GCN-NEXT: renamable $sgpr1 = COPY renamable $sgpr2614 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.1, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.1, addrspace 5)615 ; GCN-NEXT: renamable $sgpr1 = COPY killed renamable $sgpr3616 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr1, %stack.2, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.2, addrspace 5)617 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_GETPC_B64_pseudo618 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.5, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.5, addrspace 5)619 ; GCN-NEXT: renamable $sgpr0 = COPY killed renamable $sgpr1620 ; GCN-NEXT: SI_SPILL_S32_SAVE killed renamable $sgpr0, %stack.4, implicit $exec, implicit $sp_reg :: (store (s32) into %stack.4, addrspace 5)621 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)622 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)623 ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr1, killed renamable $sgpr0, implicit-def $scc624 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)625 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)626 ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc627 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.3, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.3, addrspace 5)628 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)629 ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc630 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.0, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.0, addrspace 5)631 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)632 ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc633 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.1, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.1, addrspace 5)634 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.5, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.5, addrspace 5)635 ; GCN-NEXT: dead renamable $sgpr0 = S_ADD_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc636 ; GCN-NEXT: renamable $sgpr0 = SI_SPILL_S32_RESTORE %stack.2, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.2, addrspace 5)637 ; GCN-NEXT: renamable $sgpr1 = SI_SPILL_S32_RESTORE %stack.4, implicit $exec, implicit $sp_reg :: (load (s32) from %stack.4, addrspace 5)638 ; GCN-NEXT: dead renamable $sgpr0 = S_ADDC_U32 killed renamable $sgpr0, killed renamable $sgpr1, implicit-def $scc, implicit $scc639 ; GCN-NEXT: S_ENDPGM 0640 %0:sreg_64 = S_GETPC_B64_pseudo641 %1:sreg_64 = S_GETPC_B64_pseudo642 %2:sreg_64 = S_GETPC_B64_pseudo643 %4:sreg_32 = COPY %0.sub0:sreg_64644 %5:sreg_32 = COPY %0.sub1:sreg_64645 %6:sreg_32 = COPY %1.sub0:sreg_64646 %7:sreg_32 = COPY %1.sub1:sreg_64647 %8:sreg_32 = COPY %2.sub0:sreg_64648 %9:sreg_32 = COPY %2.sub1:sreg_64649 %10:sreg_32 = S_ADD_U32 %4:sreg_32, %6:sreg_32, implicit-def $scc650 %11:sreg_32 = S_ADDC_U32 %5:sreg_32, %7:sreg_32, implicit-def $scc, implicit $scc651 %12:sreg_32 = S_ADD_U32 %4:sreg_32, %8:sreg_32, implicit-def $scc652 %13:sreg_32 = S_ADDC_U32 %5:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc653 %14:sreg_32 = S_ADD_U32 %6:sreg_32, %8:sreg_32, implicit-def $scc654 %15:sreg_32 = S_ADDC_U32 %7:sreg_32, %9:sreg_32, implicit-def $scc, implicit $scc655 S_ENDPGM 0656...657 658---659name: test_remat_s_mov_b64_imm_pseudo660tracksRegLiveness: true661body: |662 bb.0:663 ; GCN-LABEL: name: test_remat_s_mov_b64_imm_pseudo664 ; GCN: renamable $sgpr0_sgpr1 = S_MOV_B64_IMM_PSEUDO 1665 ; GCN-NEXT: renamable $sgpr2_sgpr3 = S_MOV_B64_IMM_PSEUDO 2666 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1667 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr2_sgpr3668 ; GCN-NEXT: renamable $sgpr0_sgpr1 = S_MOV_B64_IMM_PSEUDO 3669 ; GCN-NEXT: S_NOP 0, implicit killed renamable $sgpr0_sgpr1670 ; GCN-NEXT: S_ENDPGM 0671 %0:sgpr_64 = S_MOV_B64_IMM_PSEUDO 1672 %1:sgpr_64 = S_MOV_B64_IMM_PSEUDO 2673 %2:sgpr_64 = S_MOV_B64_IMM_PSEUDO 3674 S_NOP 0, implicit %0675 S_NOP 0, implicit %1676 S_NOP 0, implicit %2677 S_ENDPGM 0678...679