brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.8 KiB · a88b1ec Raw
678 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -run-pass=si-fold-operands %s -o - | FileCheck -check-prefixes=CHECK,GFX9 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=si-fold-operands %s -o - | FileCheck -check-prefixes=CHECK,GFX10 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=+wavefrontsize64 -verify-machineinstrs -run-pass=si-fold-operands %s -o - | FileCheck -check-prefixes=CHECK,GFX12 %s5 6---7name:  fold_frame_index__s_add_i32__fi_const8tracksRegLiveness: true9frameInfo:10  maxAlignment:    411  localFrameSize:  1638412stack:13  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }14body:             |15  bb.0:16    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__fi_const17    ; CHECK: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, 128, implicit-def $scc18    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]19    ; CHECK-NEXT: SI_RETURN implicit $sgpr420    %0:sreg_32 = S_MOV_B32 %stack.021    %1:sreg_32 = S_ADD_I32 %0, 128, implicit-def $scc22    $sgpr4 = COPY %123    SI_RETURN implicit $sgpr424...25 26---27name:  fold_frame_index__s_add_i32__const_fi28tracksRegLiveness: true29frameInfo:30  maxAlignment:    431  localFrameSize:  1638432stack:33  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }34body:             |35  bb.0:36    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__const_fi37    ; CHECK: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 128, %stack.0, implicit-def $scc38    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]39    ; CHECK-NEXT: SI_RETURN implicit $sgpr440    %0:sreg_32 = S_MOV_B32 %stack.041    %1:sreg_32 = S_ADD_I32 128, %0, implicit-def $scc42    $sgpr4 = COPY %143    SI_RETURN implicit $sgpr444...45 46---47name:  fold_frame_index__s_add_i32__materializedconst_fi48tracksRegLiveness: true49frameInfo:50  maxAlignment:    451  localFrameSize:  1638452stack:53  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }54body:             |55  bb.0:56    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__materializedconst_fi57    ; CHECK: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 256, %stack.0, implicit-def $scc58    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]59    ; CHECK-NEXT: SI_RETURN implicit $sgpr460    %0:sreg_32 = S_MOV_B32 25661    %1:sreg_32 = S_MOV_B32 %stack.062    %2:sreg_32 = S_ADD_I32 %0, %1, implicit-def $scc63    $sgpr4 = COPY %264    SI_RETURN implicit $sgpr465...66 67---68name:  fold_frame_index__s_add_i32__fi_materializedconst_069tracksRegLiveness: true70frameInfo:71  maxAlignment:    472  localFrameSize:  1638473stack:74  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }75body:             |76  bb.0:77    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__fi_materializedconst_078    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 25679    ; CHECK-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[S_MOV_B32_]], implicit-def $scc80    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]81    ; CHECK-NEXT: SI_RETURN implicit $sgpr482    %0:sreg_32 = S_MOV_B32 %stack.083    %1:sreg_32 = S_MOV_B32 25684    %2:sreg_32 = S_ADD_I32 %0, %1, implicit-def $scc85    $sgpr4 = COPY %286    SI_RETURN implicit $sgpr487...88 89 90---91name:  fold_frame_index__s_add_i32__fi_materializedconst_192tracksRegLiveness: true93frameInfo:94  maxAlignment:    495  localFrameSize:  1638496stack:97  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }98body:             |99  bb.0:100    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__fi_materializedconst_1101    ; CHECK: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 256, %stack.0, implicit-def $scc102    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]103    ; CHECK-NEXT: SI_RETURN implicit $sgpr4104    %0:sreg_32 = S_MOV_B32 256105    %1:sreg_32 = S_MOV_B32 %stack.0106    %2:sreg_32 = S_ADD_I32 %0, %1, implicit-def $scc107    $sgpr4 = COPY %2108    SI_RETURN implicit $sgpr4109...110 111---112name:  fold_frame_index__s_add_i32__reg_fi113tracksRegLiveness: true114frameInfo:115  maxAlignment:    4116  localFrameSize:  16384117stack:118  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }119body:             |120  bb.0:121    liveins: $sgpr4122    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__reg_fi123    ; CHECK: liveins: $sgpr4124    ; CHECK-NEXT: {{  $}}125    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4126    ; CHECK-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def $scc127    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]128    ; CHECK-NEXT: SI_RETURN implicit $sgpr4129    %0:sreg_32 = COPY $sgpr4130    %1:sreg_32 = S_MOV_B32 %stack.0131    %2:sreg_32 = S_ADD_I32 %0, %1, implicit-def $scc132    $sgpr4 = COPY %2133    SI_RETURN implicit $sgpr4134...135 136---137name:  fold_frame_index__s_add_i32__fi_reg138tracksRegLiveness: true139frameInfo:140  maxAlignment:    4141  localFrameSize:  16384142stack:143  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }144body:             |145  bb.0:146    liveins: $sgpr4147    ; CHECK-LABEL: name: fold_frame_index__s_add_i32__fi_reg148    ; CHECK: liveins: $sgpr4149    ; CHECK-NEXT: {{  $}}150    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr4151    ; CHECK-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, [[COPY]], implicit-def $scc152    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]153    ; CHECK-NEXT: SI_RETURN implicit $sgpr4154    %0:sreg_32 = COPY $sgpr4155    %1:sreg_32 = S_MOV_B32 %stack.0156    %2:sreg_32 = S_ADD_I32 %1, %0, implicit-def $scc157    $sgpr4 = COPY %2158    SI_RETURN implicit $sgpr4159...160 161---162name:  fold_frame_index__v_add_u32_e32__const_v_fi163tracksRegLiveness: true164frameInfo:165  maxAlignment:    4166  localFrameSize:  16384167stack:168  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }169body:             |170  bb.0:171    ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e32__const_v_fi172    ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 128, %stack.0, implicit $exec173    ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e32_]]174    ; CHECK-NEXT: SI_RETURN implicit $sgpr4175    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec176    %1:vgpr_32 = V_ADD_U32_e32 128, %0, implicit $exec177    $sgpr4 = COPY %1178    SI_RETURN implicit $sgpr4179...180 181---182name:  fold_frame_index__v_add_u32_e32__materialized_v_const_v_fi183tracksRegLiveness: true184frameInfo:185  maxAlignment:    4186  localFrameSize:  16384187stack:188  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }189body:             |190  bb.0:191    ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e32__materialized_v_const_v_fi192    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 128, implicit $exec193    ; CHECK-NEXT: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 %stack.0, [[V_MOV_B32_e32_]], implicit $exec194    ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e32_]]195    ; CHECK-NEXT: SI_RETURN implicit $sgpr4196    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec197    %1:vgpr_32 = V_MOV_B32_e32 128, implicit $exec198    %2:vgpr_32 = V_ADD_U32_e32 %1, %0, implicit $exec199    $sgpr4 = COPY %2200    SI_RETURN implicit $sgpr4201...202 203---204name:  fold_frame_index__v_add_u32_e64__imm_v_fi205tracksRegLiveness: true206frameInfo:207  maxAlignment:    4208  localFrameSize:  16384209stack:210  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }211body:             |212  bb.0:213    ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e64__imm_v_fi214    ; CHECK: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 64, %stack.0, 0, implicit $exec215    ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e64_]]216    ; CHECK-NEXT: SI_RETURN implicit $sgpr4217    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec218    %1:vgpr_32 = V_ADD_U32_e64 64, %0, 0, implicit $exec219    $sgpr4 = COPY %1220    SI_RETURN implicit $sgpr4221...222 223---224name:  fold_frame_index__v_add_u32_e64___v_fi_imm225tracksRegLiveness: true226frameInfo:227  maxAlignment:    4228  localFrameSize:  16384229stack:230  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }231body:             |232  bb.0:233    ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e64___v_fi_imm234    ; CHECK: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, 64, 0, implicit $exec235    ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e64_]]236    ; CHECK-NEXT: SI_RETURN implicit $sgpr4237    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec238    %1:vgpr_32 = V_ADD_U32_e64 %0, 64, 0, implicit $exec239    $sgpr4 = COPY %1240    SI_RETURN implicit $sgpr4241...242 243---244name:  fold_frame_index__v_add_co_u32_e32__const_v_fi245tracksRegLiveness: true246frameInfo:247  maxAlignment:    4248  localFrameSize:  16384249stack:250  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }251body:             |252  bb.0:253    ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e32__const_v_fi254    ; CHECK: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 128, %stack.0, implicit-def $vcc, implicit $exec255    ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e32_]]256    ; CHECK-NEXT: SI_RETURN implicit $vgpr0257    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec258    %1:vgpr_32 = V_ADD_CO_U32_e32 128, %0, implicit-def $vcc, implicit $exec259    $vgpr0 = COPY %1260    SI_RETURN implicit $vgpr0261...262 263---264name:  fold_frame_index__v_add_co_u32_e64__v_fi_imm265tracksRegLiveness: true266frameInfo:267  maxAlignment:    4268  localFrameSize:  16384269stack:270  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }271body:             |272  bb.0:273    ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e64__v_fi_imm274    ; CHECK: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 %stack.0, 64, 0, implicit $exec275    ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e64_]]276    ; CHECK-NEXT: SI_RETURN implicit $vgpr0277    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec278    %1:vgpr_32, %2:sreg_64 = V_ADD_CO_U32_e64 %0, 64, 0, implicit $exec279    $vgpr0 = COPY %1280    SI_RETURN implicit $vgpr0281...282 283---284name:  fold_frame_index__v_add_co_u32_e64__imm_v_fi285tracksRegLiveness: true286frameInfo:287  maxAlignment:    4288  localFrameSize:  16384289stack:290  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }291body:             |292  bb.0:293    ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e64__imm_v_fi294    ; CHECK: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 64, %stack.0, 0, implicit $exec295    ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e64_]]296    ; CHECK-NEXT: SI_RETURN implicit $vgpr0297    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec298    %1:vgpr_32, %2:sreg_64 = V_ADD_CO_U32_e64 64, %0, 0, implicit $exec299    $vgpr0 = COPY %1300    SI_RETURN implicit $vgpr0301...302 303---304name:  multi_use_scalar_fi__add_imm_add_inline_imm305tracksRegLiveness: true306frameInfo:307  maxAlignment:    4308  localFrameSize:  16384309stack:310  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }311body:             |312  bb.0:313    liveins: $sgpr0, $sgpr1314 315    ; CHECK-LABEL: name: multi_use_scalar_fi__add_imm_add_inline_imm316    ; CHECK: liveins: $sgpr0, $sgpr1317    ; CHECK-NEXT: {{  $}}318    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0319    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1320    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.0321    ; CHECK-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[S_MOV_B32_]], 16380, implicit-def dead $scc322    ; CHECK-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 %stack.0, 56, implicit-def dead $scc323    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]324    ; CHECK-NEXT: $sgpr5 = COPY [[S_ADD_I32_1]]325    ; CHECK-NEXT: SI_RETURN implicit $sgpr4, implicit $sgpr5326    %0:sreg_32 = COPY $sgpr0327    %1:sreg_32 = COPY $sgpr1328    %2:sreg_32 = S_MOV_B32 16380329    %3:sreg_32 = S_MOV_B32 56330    %4:sreg_32 = S_MOV_B32 %stack.0331    %5:sreg_32 = S_ADD_I32 %4, killed %2, implicit-def dead $scc332    %6:sreg_32 = S_ADD_I32 %4, killed %3, implicit-def dead $scc333    $sgpr4 = COPY %5334    $sgpr5 = COPY %6335    SI_RETURN implicit $sgpr4, implicit $sgpr5336...337 338---339name:  multi_add_use_vector_fi__add_imm_add_inline_imm340tracksRegLiveness: true341frameInfo:342  maxAlignment:    4343  localFrameSize:  16384344stack:345  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }346body:             |347  bb.0:348    liveins: $vgpr0, $vgpr1349 350    ; GFX9-LABEL: name: multi_add_use_vector_fi__add_imm_add_inline_imm351    ; GFX9: liveins: $vgpr0, $vgpr1352    ; GFX9-NEXT: {{  $}}353    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0354    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1355    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec356    ; GFX9-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_MOV_B32_e32_]], killed [[COPY1]], 0, implicit $exec357    ; GFX9-NEXT: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 [[V_MOV_B32_e32_]], 56, 0, implicit $exec358    ; GFX9-NEXT: $vgpr0 = COPY [[V_ADD_U32_e64_]]359    ; GFX9-NEXT: $vgpr1 = COPY [[V_ADD_U32_e64_1]]360    ; GFX9-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1361    ;362    ; GFX10-LABEL: name: multi_add_use_vector_fi__add_imm_add_inline_imm363    ; GFX10: liveins: $vgpr0, $vgpr1364    ; GFX10-NEXT: {{  $}}365    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0366    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1367    ; GFX10-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, killed [[COPY1]], 0, implicit $exec368    ; GFX10-NEXT: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, 56, 0, implicit $exec369    ; GFX10-NEXT: $vgpr0 = COPY [[V_ADD_U32_e64_]]370    ; GFX10-NEXT: $vgpr1 = COPY [[V_ADD_U32_e64_1]]371    ; GFX10-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1372    ;373    ; GFX12-LABEL: name: multi_add_use_vector_fi__add_imm_add_inline_imm374    ; GFX12: liveins: $vgpr0, $vgpr1375    ; GFX12-NEXT: {{  $}}376    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0377    ; GFX12-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1378    ; GFX12-NEXT: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, killed [[COPY1]], 0, implicit $exec379    ; GFX12-NEXT: [[V_ADD_U32_e64_1:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, 56, 0, implicit $exec380    ; GFX12-NEXT: $vgpr0 = COPY [[V_ADD_U32_e64_]]381    ; GFX12-NEXT: $vgpr1 = COPY [[V_ADD_U32_e64_1]]382    ; GFX12-NEXT: SI_RETURN implicit $vgpr0, implicit $vgpr1383    %0:vgpr_32 = COPY $vgpr0384    %1:vgpr_32 = COPY $vgpr1385    %2:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec386    %3:vgpr_32 = V_ADD_U32_e64 %2, killed %1, 0, implicit $exec387    %4:vgpr_32 = V_MOV_B32_e32 999, implicit $exec388    %5:vgpr_32 = COPY %3389    %6:sreg_32 = S_MOV_B32 56390    %7:vgpr_32 = V_ADD_U32_e64 %2, killed %6, 0, implicit $exec391    %8:vgpr_32 = COPY %7392    $vgpr0 = COPY %3393    $vgpr1 = COPY %7394    SI_RETURN implicit $vgpr0, implicit $vgpr1395 396...397 398---399name:  fold_frame_index__through_reg_sequence_to_user_subreg400tracksRegLiveness: true401frameInfo:402  maxAlignment:    4403  localFrameSize:  16384404stack:405  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }406body:             |407  bb.0:408    liveins: $sgpr8409    ; CHECK-LABEL: name: fold_frame_index__through_reg_sequence_to_user_subreg410    ; CHECK: liveins: $sgpr8411    ; CHECK-NEXT: {{  $}}412    ; CHECK-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr8413    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 123414    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.0415    ; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sreg_64 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1416    ; CHECK-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], %stack.0, implicit-def $scc417    ; CHECK-NEXT: [[S_ADD_I32_1:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY]], 123, implicit-def $scc418    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_I32_]]419    ; CHECK-NEXT: $sgpr5 = COPY [[S_ADD_I32_1]]420    ; CHECK-NEXT: SI_RETURN implicit $sgpr4, implicit $sgpr5421    %0:sreg_32 = COPY $sgpr8422    %1:sreg_32 = S_MOV_B32 123423    %2:sreg_32 = S_MOV_B32 %stack.0424    %3:sreg_64 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1425    %4:sreg_32 = S_ADD_I32 %0, %3.sub1, implicit-def $scc426    %5:sreg_32 = S_ADD_I32 %0, %3.sub0, implicit-def $scc427    $sgpr4 = COPY %4428    $sgpr5 = COPY %5429    SI_RETURN implicit $sgpr4, implicit $sgpr5430 431...432 433name:  fold_frame_index__s_add_u32__fi_const434tracksRegLiveness: true435frameInfo:436  maxAlignment:    4437  localFrameSize:  16384438stack:439  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }440body:             |441  bb.0:442    ; CHECK-LABEL: name: fold_frame_index__s_add_u32__fi_const443    ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 %stack.0, 128, implicit-def $scc444    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_U32_]]445    ; CHECK-NEXT: SI_RETURN implicit $sgpr4446    %0:sreg_32 = S_MOV_B32 %stack.0447    %1:sreg_32 = S_ADD_U32 %0, 128, implicit-def $scc448    $sgpr4 = COPY %1449    SI_RETURN implicit $sgpr4450...451 452---453name:  fold_frame_index__s_add_u32__const_fi454tracksRegLiveness: true455frameInfo:456  maxAlignment:    4457  localFrameSize:  16384458stack:459  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }460body:             |461  bb.0:462    ; CHECK-LABEL: name: fold_frame_index__s_add_u32__const_fi463    ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 128, %stack.0, implicit-def $scc464    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_U32_]]465    ; CHECK-NEXT: SI_RETURN implicit $sgpr4466    %0:sreg_32 = S_MOV_B32 %stack.0467    %1:sreg_32 = S_ADD_U32 128, %0, implicit-def $scc468    $sgpr4 = COPY %1469    SI_RETURN implicit $sgpr4470...471 472---473name:  fold_frame_index__s_add_u32__fi_inlineimm474tracksRegLiveness: true475frameInfo:476  maxAlignment:    4477  localFrameSize:  16384478stack:479  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }480body:             |481  bb.0:482    ; CHECK-LABEL: name: fold_frame_index__s_add_u32__fi_inlineimm483    ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 %stack.0, 16, implicit-def $scc484    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_U32_]]485    ; CHECK-NEXT: SI_RETURN implicit $sgpr4486    %0:sreg_32 = S_MOV_B32 %stack.0487    %1:sreg_32 = S_ADD_U32 %0, 16, implicit-def $scc488    $sgpr4 = COPY %1489    SI_RETURN implicit $sgpr4490...491 492---493name:  fold_frame_index__s_add_u32__inlineimm_fi494tracksRegLiveness: true495frameInfo:496  maxAlignment:    4497  localFrameSize:  16384498stack:499  - { id: 0, size: 16384, alignment: 4, local-offset: 0 }500body:             |501  bb.0:502    ; CHECK-LABEL: name: fold_frame_index__s_add_u32__inlineimm_fi503    ; CHECK: [[S_ADD_U32_:%[0-9]+]]:sreg_32 = S_ADD_U32 16, %stack.0, implicit-def $scc504    ; CHECK-NEXT: $sgpr4 = COPY [[S_ADD_U32_]]505    ; CHECK-NEXT: SI_RETURN implicit $sgpr4506    %0:sreg_32 = S_MOV_B32 %stack.0507    %1:sreg_32 = S_ADD_U32 16, %0, implicit-def $scc508    $sgpr4 = COPY %1509    SI_RETURN implicit $sgpr4510...511 512---513name:            no_fold_literal_and_fi_s_or_b32514tracksRegLiveness: true515frameInfo:516  maxAlignment:    16517  localFrameSize:  8192518stack:519  - { id: 0, size: 4096, alignment: 4, local-offset: 0 }520  - { id: 1, size: 4096, alignment: 16, local-offset: 4096 }521body:             |522  bb.0:523    ; CHECK-LABEL: name: no_fold_literal_and_fi_s_or_b32524    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.1525    ; CHECK-NEXT: [[S_AND_B32_:%[0-9]+]]:sreg_32 = S_AND_B32 killed [[S_MOV_B32_]], 12345, implicit-def dead $scc526    ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_AND_B32_]]527    %0:sreg_32 = S_MOV_B32 12345528    %1:sreg_32 = S_MOV_B32 %stack.1529    %2:sreg_32 = S_AND_B32 killed %1, killed %0, implicit-def dead $scc530    S_ENDPGM 0, implicit %2531 532...533 534---535name:            no_fold_literal_or_fi_s_or_b32536tracksRegLiveness: true537frameInfo:538  maxAlignment:    16539  localFrameSize:  8192540stack:541  - { id: 0, size: 4096, alignment: 4, local-offset: 0 }542  - { id: 1, size: 4096, alignment: 16, local-offset: 4096 }543body:             |544  bb.0:545    ; CHECK-LABEL: name: no_fold_literal_or_fi_s_or_b32546    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.1547    ; CHECK-NEXT: [[S_OR_B32_:%[0-9]+]]:sreg_32 = S_OR_B32 killed [[S_MOV_B32_]], 12345, implicit-def dead $scc548    ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_OR_B32_]]549    %0:sreg_32 = S_MOV_B32 12345550    %1:sreg_32 = S_MOV_B32 %stack.1551    %2:sreg_32 = S_OR_B32 killed %1, killed %0, implicit-def dead $scc552    S_ENDPGM 0, implicit %2553 554...555 556---557name:            no_fold_literal_and_fi_s_mul_i32558tracksRegLiveness: true559frameInfo:560  maxAlignment:    16561  localFrameSize:  8192562stack:563  - { id: 0, size: 4096, alignment: 4, local-offset: 0 }564  - { id: 1, size: 4096, alignment: 16, local-offset: 4096 }565body:             |566  bb.0:567    ; CHECK-LABEL: name: no_fold_literal_and_fi_s_mul_i32568    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.1569    ; CHECK-NEXT: [[S_MUL_I32_:%[0-9]+]]:sreg_32 = S_MUL_I32 killed [[S_MOV_B32_]], 12345, implicit-def dead $scc570    ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_MUL_I32_]]571    %0:sreg_32 = S_MOV_B32 12345572    %1:sreg_32 = S_MOV_B32 %stack.1573    %2:sreg_32 = S_MUL_I32 killed %1, killed %0, implicit-def dead $scc574    S_ENDPGM 0, implicit %2575 576...577 578---579name:            no_fold_multiple_fi_s_cselect_b32580tracksRegLiveness: true581stack:582  - { id: 0, size: 64, alignment: 4 }583  - { id: 1, size: 32, alignment: 4 }584body:             |585  bb.0:586    ; CHECK-LABEL: name: no_fold_multiple_fi_s_cselect_b32587    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 %stack.1588    ; CHECK-NEXT: [[S_CSELECT_B32_:%[0-9]+]]:sreg_32 = S_CSELECT_B32 killed [[S_MOV_B32_]], %stack.0, implicit undef $scc589    ; CHECK-NEXT: S_ENDPGM 0, implicit [[S_CSELECT_B32_]]590    %0:sreg_32 = S_MOV_B32 %stack.0591    %1:sreg_32 = S_MOV_B32 %stack.1592    %2:sreg_32 = S_CSELECT_B32 killed %1, killed %0, implicit undef $scc593    S_ENDPGM 0, implicit %2594 595...596 597---598name:            no_fold_multiple_fi_v_cndmask_b32_e64599tracksRegLiveness: true600stack:601  - { id: 0, size: 64, alignment: 4 }602  - { id: 1, size: 32, alignment: 4 }603body:             |604  bb.0:605    liveins: $sgpr8_sgpr9606    ; GFX9-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e64607    ; GFX9: liveins: $sgpr8_sgpr9608    ; GFX9-NEXT: {{  $}}609    ; GFX9-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr8_sgpr9610    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec611    ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec612    ; GFX9-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, killed [[V_MOV_B32_e32_]], 0, killed [[V_MOV_B32_e32_1]], [[COPY]], implicit $exec613    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]614    ;615    ; GFX10-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e64616    ; GFX10: liveins: $sgpr8_sgpr9617    ; GFX10-NEXT: {{  $}}618    ; GFX10-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr8_sgpr9619    ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec620    ; GFX10-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, %stack.0, 0, killed [[V_MOV_B32_e32_]], [[COPY]], implicit $exec621    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]622    ;623    ; GFX12-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e64624    ; GFX12: liveins: $sgpr8_sgpr9625    ; GFX12-NEXT: {{  $}}626    ; GFX12-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr8_sgpr9627    ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec628    ; GFX12-NEXT: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, %stack.0, 0, killed [[V_MOV_B32_e32_]], [[COPY]], implicit $exec629    ; GFX12-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e64_]]630    %0:sreg_64_xexec = COPY $sgpr8_sgpr9631    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec632    %2:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec633    %3:vgpr_32 = V_CNDMASK_B32_e64 0, killed %1, 0, killed %2, %0, implicit $exec634    S_ENDPGM 0, implicit %3635 636...637 638---639name:            no_fold_multiple_fi_v_cndmask_b32_e32640tracksRegLiveness: true641stack:642  - { id: 0, size: 64, alignment: 4 }643  - { id: 1, size: 32, alignment: 4 }644body:             |645  bb.0:646    liveins: $sgpr8_sgpr9647    ; GFX9-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e32648    ; GFX9: liveins: $sgpr8_sgpr9649    ; GFX9-NEXT: {{  $}}650    ; GFX9-NEXT: $vcc = COPY $sgpr8_sgpr9651    ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec652    ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec653    ; GFX9-NEXT: [[V_CNDMASK_B32_e32_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e32 killed [[V_MOV_B32_e32_]], killed [[V_MOV_B32_e32_1]], implicit $vcc, implicit $exec654    ; GFX9-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e32_]]655    ;656    ; GFX10-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e32657    ; GFX10: liveins: $sgpr8_sgpr9658    ; GFX10-NEXT: {{  $}}659    ; GFX10-NEXT: $vcc = COPY $sgpr8_sgpr9660    ; GFX10-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec661    ; GFX10-NEXT: [[V_CNDMASK_B32_e32_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e32 %stack.0, killed [[V_MOV_B32_e32_]], implicit $vcc, implicit $exec662    ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e32_]]663    ;664    ; GFX12-LABEL: name: no_fold_multiple_fi_v_cndmask_b32_e32665    ; GFX12: liveins: $sgpr8_sgpr9666    ; GFX12-NEXT: {{  $}}667    ; GFX12-NEXT: $vcc = COPY $sgpr8_sgpr9668    ; GFX12-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec669    ; GFX12-NEXT: [[V_CNDMASK_B32_e32_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e32 %stack.0, killed [[V_MOV_B32_e32_]], implicit $vcc, implicit $exec670    ; GFX12-NEXT: S_ENDPGM 0, implicit [[V_CNDMASK_B32_e32_]]671    $vcc = COPY $sgpr8_sgpr9672    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec673    %2:vgpr_32 = V_MOV_B32_e32 %stack.1, implicit $exec674    %3:vgpr_32 = V_CNDMASK_B32_e32 killed %1, killed %2, implicit $vcc, implicit $exec675    S_ENDPGM 0, implicit %3676 677...678