brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.8 KiB · 8626ac0 Raw
236 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# First operand is FI is in a VGPR, other operand is a VGPR7name: shrink_vgpr_fi_vgpr_v_add_i32_e64_no_carry_out_use8tracksRegLiveness: true9stack:10  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }11body:             |12  bb.0:13    liveins: $vgpr014 15    ; GCN-LABEL: name: shrink_vgpr_fi_vgpr_v_add_i32_e64_no_carry_out_use16    ; GCN: liveins: $vgpr017    ; GCN-NEXT: {{  $}}18    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec19    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr020    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[V_MOV_B32_e32_]], [[COPY]], implicit-def $vcc, implicit $exec21    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]22    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec23    %1:vgpr_32 = COPY $vgpr024    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec25    S_ENDPGM 0, implicit %226 27...28 29---30 31# First operand is a VGPR, other operand FI is in a VGPR32name: shrink_vgpr_vgpr_fi_v_add_i32_e64_no_carry_out_use33tracksRegLiveness: true34stack:35  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }36body:             |37  bb.0:38    liveins: $vgpr039 40    ; GCN-LABEL: name: shrink_vgpr_vgpr_fi_v_add_i32_e64_no_carry_out_use41    ; GCN: liveins: $vgpr042    ; GCN-NEXT: {{  $}}43    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr044    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec45    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[COPY]], [[V_MOV_B32_e32_]], implicit-def $vcc, implicit $exec46    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]47    %0:vgpr_32 = COPY $vgpr048    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec49    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec50    S_ENDPGM 0, implicit %251 52...53 54---55 56# First operand is FI is in an SGPR, other operand is a VGPR57name: shrink_vgpr_fi_sgpr_v_add_i32_e64_no_carry_out_use58tracksRegLiveness: true59stack:60  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }61body:             |62  bb.0:63    liveins: $sgpr064 65    ; GCN-LABEL: name: shrink_vgpr_fi_sgpr_v_add_i32_e64_no_carry_out_use66    ; GCN: liveins: $sgpr067    ; GCN-NEXT: {{  $}}68    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec69    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr070    ; GCN-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY]], [[V_MOV_B32_e32_]], 0, implicit $exec71    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e64_]]72    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec73    %1:sreg_32_xm0 = COPY $sgpr074    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec75    S_ENDPGM 0, implicit %276 77...78 79---80 81# First operand is an SGPR, other operand FI is in a VGPR82name: shrink_sgpr_vgpr_fi_v_add_i32_e64_no_carry_out_use83tracksRegLiveness: true84stack:85  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }86body:             |87  bb.0:88    liveins: $sgpr089 90    ; GCN-LABEL: name: shrink_sgpr_vgpr_fi_v_add_i32_e64_no_carry_out_use91    ; GCN: liveins: $sgpr092    ; GCN-NEXT: {{  $}}93    ; GCN-NEXT: [[COPY:%[0-9]+]]:sreg_32_xm0 = COPY $sgpr094    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec95    ; GCN-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[V_MOV_B32_e32_]], [[COPY]], 0, implicit $exec96    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e64_]]97    %0:sreg_32_xm0 = COPY $sgpr098    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec99    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec100    S_ENDPGM 0, implicit %2101 102...103 104---105 106# First operand is FI is in an SGPR, other operand is a VGPR107name: shrink_sgpr_fi_vgpr_v_add_i32_e64_no_carry_out_use108tracksRegLiveness: true109stack:110  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }111body:             |112  bb.0:113    liveins: $vgpr0114 115    ; GCN-LABEL: name: shrink_sgpr_fi_vgpr_v_add_i32_e64_no_carry_out_use116    ; GCN: liveins: $vgpr0117    ; GCN-NEXT: {{  $}}118    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 %stack.0119    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0120    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[COPY]], implicit-def $vcc, implicit $exec121    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]122    %0:sreg_32_xm0 = S_MOV_B32 %stack.0123    %1:vgpr_32 = COPY $vgpr0124    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec125    S_ENDPGM 0, implicit %2126 127...128 129---130 131# First operand is a VGPR, other operand FI is in an SGPR132name: shrink_vgpr_sgpr_fi_v_add_i32_e64_no_carry_out_use133tracksRegLiveness: true134stack:135  - { id: 0, type: default, offset: 0, size: 64, alignment: 16}136body:             |137  bb.0:138    liveins: $vgpr0139 140    ; GCN-LABEL: name: shrink_vgpr_sgpr_fi_v_add_i32_e64_no_carry_out_use141    ; GCN: liveins: $vgpr0142    ; GCN-NEXT: {{  $}}143    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0144    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32_xm0 = S_MOV_B32 %stack.0145    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 [[S_MOV_B32_]], [[COPY]], implicit-def $vcc, implicit $exec146    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]147    %0:vgpr_32 = COPY $vgpr0148    %1:sreg_32_xm0 = S_MOV_B32 %stack.0149    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec150    S_ENDPGM 0, implicit %2151 152...153 154---155 156# First operand is FI is in a VGPR, other operand is an inline imm in a VGPR157name: shrink_vgpr_imm_fi_vgpr_v_add_i32_e64_no_carry_out_use158tracksRegLiveness: true159stack:160  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }161body:             |162  bb.0:163 164    ; GCN-LABEL: name: shrink_vgpr_imm_fi_vgpr_v_add_i32_e64_no_carry_out_use165    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec166    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 16, [[V_MOV_B32_e32_]], implicit-def $vcc, implicit $exec167    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]168    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec169    %1:vgpr_32 = V_MOV_B32_e32 16, implicit $exec170    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec171    S_ENDPGM 0, implicit %2172 173...174 175---176 177# First operand is an inline imm in a VGPR, other operand FI is in a VGPR178name: shrink_vgpr_imm_vgpr_fi_v_add_i32_e64_no_carry_out_use179tracksRegLiveness: true180stack:181  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }182body:             |183  bb.0:184 185    ; GCN-LABEL: name: shrink_vgpr_imm_vgpr_fi_v_add_i32_e64_no_carry_out_use186    ; GCN: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 16, %stack.0, 0, implicit $exec187    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e64_]]188    %0:vgpr_32 = V_MOV_B32_e32 16, implicit $exec189    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec190    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec191    S_ENDPGM 0, implicit %2192 193...194 195---196 197# First operand is FI is in a VGPR, other operand is an literal constant in a VGPR198name: shrink_vgpr_k_fi_vgpr_v_add_i32_e64_no_carry_out_use199tracksRegLiveness: true200stack:201  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }202body:             |203  bb.0:204 205    ; GCN-LABEL: name: shrink_vgpr_k_fi_vgpr_v_add_i32_e64_no_carry_out_use206    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec207    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 1234, [[V_MOV_B32_e32_]], implicit-def $vcc, implicit $exec208    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]209    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec210    %1:vgpr_32 = V_MOV_B32_e32 1234, implicit $exec211    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec212    S_ENDPGM 0, implicit %2213 214...215 216---217 218# First operand is a literal constant in a VGPR, other operand FI is in a VGPR219name: shrink_vgpr_k_vgpr_fi_v_add_i32_e64_no_carry_out_use220tracksRegLiveness: true221stack:222  - { id: 0, type: default, offset: 0, size: 64, alignment: 16 }223body:             |224  bb.0:225 226    ; GCN-LABEL: name: shrink_vgpr_k_vgpr_fi_v_add_i32_e64_no_carry_out_use227    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1234, implicit $exec228    ; GCN-NEXT: [[V_ADD_CO_U32_e32_:%[0-9]+]]:vgpr_32 = V_ADD_CO_U32_e32 %stack.0, [[V_MOV_B32_e32_]], implicit-def $vcc, implicit $exec229    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ADD_CO_U32_e32_]]230    %0:vgpr_32 = V_MOV_B32_e32 1234, implicit $exec231    %1:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec232    %2:vgpr_32, %3:sreg_64 = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec233    S_ENDPGM 0, implicit %2234 235...236