|  | # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 | 
|  | # RUN: llc -mtriple=amdgcn -mcpu=gfx1030 -verify-machineinstrs -run-pass=si-fold-operands %s -o - | FileCheck %s | 
|  | # RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -verify-machineinstrs -run-pass=si-fold-operands %s -o - | FileCheck %s | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_u32_e32__const_v_fi | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e32__const_v_fi | 
|  | ; CHECK: [[V_ADD_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e32 128, %stack.0, implicit $exec | 
|  | ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_U32_e32_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $vgpr0 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32 = V_ADD_U32_e32 128, %0, implicit $exec | 
|  | $vgpr0 = COPY %1 | 
|  | SI_RETURN implicit $vgpr0 | 
|  | ... | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_co_u32_e64__v_fi_const | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e64__v_fi_const | 
|  | ; CHECK: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32 = V_ADD_CO_U32_e64 %stack.0, 128, 0, implicit $exec | 
|  | ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e64_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $vgpr0 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32, %2:sreg_32 = V_ADD_CO_U32_e64 %0, 128, 0, implicit $exec | 
|  | $vgpr0 = COPY %1 | 
|  | SI_RETURN implicit $vgpr0 | 
|  | ... | 
|  |  | 
|  |  | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_u32_e64__const_v_fi | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e64__const_v_fi | 
|  | ; CHECK: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 128, %stack.0, 0, implicit $exec | 
|  | ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e64_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $sgpr4 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32 = V_ADD_U32_e64 128, %0, 0, implicit $exec | 
|  | $sgpr4 = COPY %1 | 
|  | SI_RETURN implicit $sgpr4 | 
|  | ... | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_u32_e64___v_fi_const | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_u32_e64___v_fi_const | 
|  | ; CHECK: [[V_ADD_U32_e64_:%[0-9]+]]:vgpr_32 = V_ADD_U32_e64 %stack.0, 128, 0, implicit $exec | 
|  | ; CHECK-NEXT: $sgpr4 = COPY [[V_ADD_U32_e64_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $sgpr4 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32 = V_ADD_U32_e64 %0, 128, 0, implicit $exec | 
|  | $sgpr4 = COPY %1 | 
|  | SI_RETURN implicit $sgpr4 | 
|  | ... | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_co_u32_e64___fi_const_v | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e64___fi_const_v | 
|  | ; CHECK: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32 = V_ADD_CO_U32_e64 128, %stack.0, 0, implicit $exec | 
|  | ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e64_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $vgpr0 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32, %2:sreg_32 = V_ADD_CO_U32_e64 128, %0, 0, implicit $exec | 
|  | $vgpr0 = COPY %1 | 
|  | SI_RETURN implicit $vgpr0 | 
|  | ... | 
|  |  | 
|  | --- | 
|  | name:  fold_frame_index__v_add_co_u32_e64__v_fi_imm | 
|  | tracksRegLiveness: true | 
|  | frameInfo: | 
|  | maxAlignment:    4 | 
|  | localFrameSize:  16384 | 
|  | stack: | 
|  | - { id: 0, size: 16384, alignment: 4, local-offset: 0 } | 
|  | body:             | | 
|  | bb.0: | 
|  | ; CHECK-LABEL: name: fold_frame_index__v_add_co_u32_e64__v_fi_imm | 
|  | ; CHECK: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32 = V_ADD_CO_U32_e64 %stack.0, 64, 0, implicit $exec | 
|  | ; CHECK-NEXT: $vgpr0 = COPY [[V_ADD_CO_U32_e64_]] | 
|  | ; CHECK-NEXT: SI_RETURN implicit $vgpr0 | 
|  | %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec | 
|  | %1:vgpr_32, %2:sreg_32 = V_ADD_CO_U32_e64 %0, 64, 0, implicit $exec | 
|  | $vgpr0 = COPY %1 | 
|  | SI_RETURN implicit $vgpr0 | 
|  | ... | 
|  |  |