237 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck --check-prefixes=GCN %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck --check-prefixes=GCN %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 %s --passes=two-address-instruction -verify-each -o - | FileCheck --check-prefixes=GCN %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 %s --passes=two-address-instruction -verify-each -o - | FileCheck --check-prefixes=GCN %s5 6# GCN-LABEL: name: test_fmamk_reg_imm_f327# GCN: %2:vgpr_32 = IMPLICIT_DEF8# GCN-NOT: V_MOV_B329# GCN: V_FMAMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec10---11name: test_fmamk_reg_imm_f3212registers:13 - { id: 0, class: vreg_64 }14 - { id: 1, class: vgpr_32 }15 - { id: 2, class: vgpr_32 }16 - { id: 3, class: vgpr_32 }17body: |18 bb.0:19 20 %0 = IMPLICIT_DEF21 %1 = COPY %0.sub122 %2 = V_MOV_B32_e32 1078523331, implicit $exec23 %3 = V_FMAC_F32_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec24 25...26 27# GCN-LABEL: name: test_fmamk_imm_reg_f3228# GCN: %2:vgpr_32 = IMPLICIT_DEF29# GCN-NOT: V_MOV_B3230# GCN: V_FMAMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec31---32name: test_fmamk_imm_reg_f3233registers:34 - { id: 0, class: vreg_64 }35 - { id: 1, class: vgpr_32 }36 - { id: 2, class: vgpr_32 }37 - { id: 3, class: vgpr_32 }38body: |39 bb.0:40 41 %0 = IMPLICIT_DEF42 %1 = COPY %0.sub143 %2 = V_MOV_B32_e32 1078523331, implicit $exec44 %3 = V_FMAC_F32_e32 %2, killed %0.sub0, killed %1, implicit $mode, implicit $exec45 46...47 48# GCN-LABEL: name: test_fmaak_f3249# GCN: %1:vgpr_32 = V_MOV_B32_e32 1078523331, implicit $exec50# GCN-NOT: V_MOV_B3251# GCN: V_FMAAK_F32 killed %0.sub0, %0.sub1, 1078523331, implicit $mode, implicit $exec52---53name: test_fmaak_f3254registers:55 - { id: 0, class: vreg_64 }56 - { id: 1, class: vgpr_32 }57 - { id: 2, class: vgpr_32 }58body: |59 bb.0:60 61 %0 = IMPLICIT_DEF62 %1 = V_MOV_B32_e32 1078523331, implicit $exec63 %2 = V_FMAC_F32_e32 killed %0.sub0, %0.sub1, %1, implicit $mode, implicit $exec64 S_ENDPGM 0, implicit %165...66 67 68# GCN-LABEL: name: test_fmaak_sgpr_src0_f3269# GCN: %1:vgpr_32 = IMPLICIT_DEF70# GCN-NOT: V_MOV_B3271# GCN: %3:vgpr_32 = V_FMAMK_F32 killed %0, 1078523331, %2, implicit $mode, implicit $exec72 73---74name: test_fmaak_sgpr_src0_f3275registers:76 - { id: 0, class: sreg_32_xm0 }77 - { id: 1, class: vgpr_32}78 - { id: 2, class: vgpr_32 }79 - { id: 3, class: vgpr_32 }80body: |81 bb.0:82 83 %0 = IMPLICIT_DEF84 %1 = V_MOV_B32_e32 1078523331, implicit $exec85 %2 = IMPLICIT_DEF86 %3 = V_FMAC_F32_e32 killed %0, %1, %2, implicit $mode, implicit $exec87 S_ENDPGM 0, implicit %288...89 90# GCN-LABEL: name: test_fmaak_inlineimm_src0_f3291# GCN: %0:vgpr_32 = IMPLICIT_DEF92# GCN-NOT: V_MOV_B3293# GCN: %2:vgpr_32 = V_FMAMK_F32 1073741824, 1078523331, %1, implicit $mode, implicit $exec94 95---96name: test_fmaak_inlineimm_src0_f3297registers:98 - { id: 0, class: vgpr_32}99 - { id: 1, class: vgpr_32 }100 - { id: 2, class: vgpr_32 }101body: |102 bb.0:103 104 %0 = V_MOV_B32_e32 1078523331, implicit $exec105 %1 = IMPLICIT_DEF106 %2 = V_FMAC_F32_e32 1073741824, %0, %1, implicit $mode, implicit $exec107 S_ENDPGM 0, implicit %1108...109 110# GCN-LABEL: name: test_fmaak_otherimm_src0_f32111# GCN: %2:vgpr_32 = V_FMAMK_F32 %0, 1120403456, %1, implicit $mode, implicit $exec112 113---114name: test_fmaak_otherimm_src0_f32115registers:116 - { id: 0, class: vgpr_32}117 - { id: 1, class: vgpr_32 }118 - { id: 2, class: vgpr_32 }119body: |120 bb.0:121 122 %0 = V_MOV_B32_e32 1078523331, implicit $exec123 %1 = IMPLICIT_DEF124 %2 = V_FMAC_F32_e32 1120403456, %0, %1, implicit $mode, implicit $exec125 S_ENDPGM 0, implicit %1126...127 128# GCN-LABEL: name: test_fmaak_other_constantlike_src0_f32129# GCN: %2:vgpr_32 = COPY %1130# GCN: %2:vgpr_32 = V_FMAC_F32_e32 %stack.0, %0, %2, implicit $mode, implicit $exec131---132name: test_fmaak_other_constantlike_src0_f32133tracksRegLiveness: true134registers:135 - { id: 0, class: vgpr_32 }136 - { id: 1, class: vgpr_32 }137 - { id: 2, class: vgpr_32 }138machineFunctionInfo:139 stackPtrOffsetReg: $sgpr32140stack:141 - { id: 0, name: "", type: default, offset: 0, size: 128, alignment: 8,142 callee-saved-register: '', local-offset: 0, debug-info-variable: '',143 debug-info-expression: '', debug-info-location: '' }144body: |145 bb.0:146 147 %0 = V_MOV_B32_e32 1078523331, implicit $exec148 %1 = IMPLICIT_DEF149 %2 = V_FMAC_F32_e32 %stack.0, %0, %1, implicit $mode, implicit $exec150 151...152 153 154# GCN-LABEL: name: test_fmamk_reg_imm_f32_2_folds155# GCN: %2:vgpr_32 = IMPLICIT_DEF156# GCN-NOT: V_MOV_B32157# GCN: V_FMAMK_F32 %0.sub0, 1078523331, %1, implicit $mode, implicit $exec158# GCN: V_FMAMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec159---160name: test_fmamk_reg_imm_f32_2_folds161registers:162 - { id: 0, class: vreg_64 }163 - { id: 1, class: vgpr_32 }164 - { id: 2, class: vgpr_32 }165 - { id: 3, class: vgpr_32 }166 - { id: 4, class: vgpr_32 }167body: |168 bb.0:169 170 %0 = IMPLICIT_DEF171 %1 = COPY %0.sub1172 %2 = V_MOV_B32_e32 1078523331, implicit $exec173 %3 = V_FMAC_F32_e32 %0.sub0, %2, %1, implicit $mode, implicit $exec174 %4 = V_FMAC_F32_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec175 176...177 178# GCN-LABEL: name: test_fmamk_reg_imm_f32_used_imm179# GCN: %2:vgpr_32 = V_MOV_B32_e32 1078523331, implicit $exec180# GCN: V_FMAMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec181---182name: test_fmamk_reg_imm_f32_used_imm183registers:184 - { id: 0, class: vreg_64 }185 - { id: 1, class: vgpr_32 }186 - { id: 2, class: vgpr_32 }187 - { id: 3, class: vgpr_32 }188body: |189 bb.0:190 191 %0 = IMPLICIT_DEF192 %1 = COPY %0.sub1193 %2 = V_MOV_B32_e32 1078523331, implicit $exec194 %3 = V_FMAC_F32_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec195 S_NOP 0, implicit %2196 197...198 199# GCN-LABEL: name: test_fma_src0mods200# GCN: %3:vgpr_32 = V_FMA_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec201---202name: test_fma_src0mods203body: |204 bb.0:205 %0:vgpr_32 = IMPLICIT_DEF206 %1:vgpr_32 = IMPLICIT_DEF207 %2:vgpr_32 = IMPLICIT_DEF208 %3:vgpr_32 = V_FMAC_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec209 S_ENDPGM 0, implicit %2210...211 212# GCN-LABEL: name: test_fma_src1mods213# GCN: %3:vgpr_32 = V_FMA_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec214---215name: test_fma_src1mods216body: |217 bb.0:218 %0:vgpr_32 = IMPLICIT_DEF219 %1:vgpr_32 = IMPLICIT_DEF220 %2:vgpr_32 = IMPLICIT_DEF221 %3:vgpr_32 = V_FMAC_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec222 S_ENDPGM 0, implicit %2223...224 225# GCN-LABEL: name: test_fma_src2mods226# GCN: %3:vgpr_32 = V_FMA_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec227---228name: test_fma_src2mods229body: |230 bb.0:231 %0:vgpr_32 = IMPLICIT_DEF232 %1:vgpr_32 = IMPLICIT_DEF233 %2:vgpr_32 = IMPLICIT_DEF234 %3:vgpr_32 = V_FMAC_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec235 S_ENDPGM 0, implicit %2236...237