brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · fc2d480 Raw
108 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -run-pass si-fold-operands,dead-mi-elimination  %s -o - | FileCheck -check-prefix=GCN %s3 4---5 6# Uses a carry out in an instruction that can't be shrunk.7 8name: shrink_scalar_imm_vgpr_v_add_i32_e64_other_carry_out_use9tracksRegLiveness: true10 11body:             |12  bb.0:13    ; GCN-LABEL: name: shrink_scalar_imm_vgpr_v_add_i32_e64_other_carry_out_use14    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 1234515    ; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF16    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[DEF]], implicit-def $vcc, implicit $exec17    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY killed $vcc18    ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]]19    %0:sreg_32_xm0 = S_MOV_B32 1234520    %1:vgpr_32 = IMPLICIT_DEF21    %2:vgpr_32 = IMPLICIT_DEF22    %3:vgpr_32 = IMPLICIT_DEF23 24    %4:vgpr_32, %5:sreg_64_xexec = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec25    S_ENDPGM 0, implicit %526 27...28---29 30name: shrink_scalar_imm_multi_use_with_used_carry31tracksRegLiveness: true32 33body:             |34  bb.0:35    ; GCN-LABEL: name: shrink_scalar_imm_multi_use_with_used_carry36    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 1234537    ; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF38    ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF39    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[DEF]], implicit-def $vcc, implicit $exec40    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY killed $vcc41    ; GCN-NEXT: [[V_ADD_CO_U32_e32_1:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[DEF1]], implicit-def $vcc, implicit $exec42    ; GCN-NEXT: S_ENDPGM 0, implicit [[COPY]], implicit [[V_ADD_CO_U32_e32_1]]43    %0:sreg_32_xm0 = S_MOV_B32 1234544    %1:vgpr_32 = IMPLICIT_DEF45    %2:vgpr_32 = IMPLICIT_DEF46    %3:vgpr_32 = IMPLICIT_DEF47    %4:vgpr_32 = IMPLICIT_DEF48 49    %5:vgpr_32, %6:sreg_64_xexec = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec50    %7:vgpr_32, %8:sreg_64_xexec = V_ADD_CO_U32_e64 %0, %2, 0, implicit $exec51    S_ENDPGM 0, implicit %6, implicit %752 53...54---55 56# TODO: Is it OK to leave the broken use around on the DBG_VALUE?57 58name: shrink_scalar_imm_vgpr_v_add_i32_e64_dbg_only_carry_out_use59tracksRegLiveness: true60 61body:             |62  bb.0:63    ; GCN-LABEL: name: shrink_scalar_imm_vgpr_v_add_i32_e64_dbg_only_carry_out_use64    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 1234565    ; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF66    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[DEF]], implicit-def $vcc, implicit $exec67    ; GCN-NEXT: DBG_VALUE %5:sreg_64_xexec, $noreg68    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]69    %0:sreg_32_xm0 = S_MOV_B32 1234570    %1:vgpr_32 = IMPLICIT_DEF71    %2:vgpr_32 = IMPLICIT_DEF72    %3:vgpr_32 = IMPLICIT_DEF73 74    %4:vgpr_32, %5:sreg_64_xexec = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec75    DBG_VALUE %5, $noreg76    S_ENDPGM 0, implicit %477 78...79 80---81 82# Uses carry out in a normal pattern83 84name: shrink_scalar_imm_vgpr_v_add_i32_e64_carry_out_use85tracksRegLiveness: true86 87body:             |88  bb.0:89    ; GCN-LABEL: name: shrink_scalar_imm_vgpr_v_add_i32_e64_carry_out_use90    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 1234591    ; GCN-NEXT: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF92    ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF93    ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF94    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[DEF]], implicit-def $vcc, implicit $exec95    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY killed $vcc96    ; GCN-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[DEF1]], [[DEF2]], [[COPY]], 0, implicit $exec97    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADDC_U32_e64_]]98    %0:sreg_32_xm0 = S_MOV_B32 1234599    %1:vgpr_32 = IMPLICIT_DEF100    %2:vgpr_32 = IMPLICIT_DEF101    %3:vgpr_32 = IMPLICIT_DEF102 103    %4:vgpr_32, %5:sreg_64_xexec = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec104    %6:vgpr_32, %7:sreg_64_xexec = V_ADDC_U32_e64 %2, %3, %5, 0, implicit $exec105    S_ENDPGM 0, implicit %6106 107...108