202 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx90a %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck -check-prefixes=GCN,GFX90A %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx90a %s --passes=two-address-instruction -verify-each -o - | FileCheck -check-prefix=GCN %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1250 %s -run-pass twoaddressinstruction -o - | FileCheck -check-prefixes=GCN,GFX1250 %s4 5# GCN-LABEL: name: test_fmamk_reg_imm_f646# GFX90A: V_FMA_F64_e64 0, killed %0, 0, %2, 0, killed %1, 0, 0, implicit $mode, implicit $exec7# GFX1250: V_FMAMK_F64 killed %0, 4607182418800017408, killed %1, implicit $mode, implicit $exec8---9name: test_fmamk_reg_imm_f6410registers:11 - { id: 0, class: vreg_64_align2 }12 - { id: 1, class: vreg_64_align2 }13 - { id: 2, class: vreg_64_align2 }14 - { id: 3, class: vreg_64_align2 }15body: |16 bb.0:17 18 %0 = IMPLICIT_DEF19 %1 = COPY %020 %2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec21 %3 = V_FMAC_F64_e32 killed %0, %2, killed %1, implicit $mode, implicit $exec22 23...24 25# GCN-LABEL: name: test_fmamk_imm_reg_f6426# GFX90A: V_FMA_F64_e64 0, %2, 0, killed %0.sub0_sub1, 0, killed %1, 0, 0, implicit $mode, implicit $exec27# GFX1250: V_FMAMK_F64 killed %0.sub0_sub1, 4607182418800017408, killed %1, implicit $mode, implicit $exec28---29name: test_fmamk_imm_reg_f6430registers:31 - { id: 0, class: vreg_128_align2 }32 - { id: 1, class: vreg_64_align2 }33 - { id: 2, class: vreg_64_align2 }34 - { id: 3, class: vreg_64_align2 }35body: |36 bb.0:37 38 %0 = IMPLICIT_DEF39 %1 = COPY %0.sub2_sub340 %2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec41 %3 = V_FMAC_F64_e32 %2, killed %0.sub0_sub1, killed %1, implicit $mode, implicit $exec42 43...44 45# GCN-LABEL: name: test_fmaak_f6446# GFX90A: V_FMA_F64_e64 0, killed %0.sub0_sub1, 0, %0.sub2_sub3, 0, %1, 0, 0, implicit $mode, implicit $exec47# GFX1250: V_FMAAK_F64 killed %0.sub0_sub1, %0.sub2_sub3, 4607182418800017408, implicit $mode, implicit $exec48---49name: test_fmaak_f6450registers:51 - { id: 0, class: vreg_128_align2 }52 - { id: 1, class: vreg_64_align2 }53 - { id: 2, class: vreg_64_align2 }54body: |55 bb.0:56 57 %0 = IMPLICIT_DEF58 %1 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec59 %2 = V_FMAC_F64_e32 killed %0.sub0_sub1, %0.sub2_sub3, %1, implicit $mode, implicit $exec60 S_ENDPGM 0, implicit %161...62 63# GCN-LABEL: name: test_fmaak_sgpr_src0_f6464# GFX90A: V_FMA_F64_e64 0, killed %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec65# GFX1250: V_FMAMK_F64 killed %0, 4607182418800017408, %2, implicit $mode, implicit $exec66 67---68name: test_fmaak_sgpr_src0_f6469registers:70 - { id: 0, class: sreg_64 }71 - { id: 1, class: vreg_64_align2 }72 - { id: 2, class: vreg_64_align2 }73 - { id: 3, class: vreg_64_align2 }74body: |75 bb.0:76 77 %0 = IMPLICIT_DEF78 %1 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec79 %2 = IMPLICIT_DEF80 %3 = V_FMAC_F64_e32 killed %0, %1, %2, implicit $mode, implicit $exec81 S_ENDPGM 0, implicit %282...83 84# GCN-LABEL: name: test_fmaak_inlineimm_src0_f6485# GFX90A: V_FMA_F64_e64 0, 4611686018427387904, 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec86# GFX1250: V_FMAMK_F64 4611686018427387904, 4607182418800017408, %1, implicit $mode, implicit $exec87 88---89name: test_fmaak_inlineimm_src0_f6490registers:91 - { id: 0, class: vreg_64_align2 }92 - { id: 1, class: vreg_64_align2 }93 - { id: 2, class: vreg_64_align2 }94body: |95 bb.0:96 97 %0 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec98 %1 = IMPLICIT_DEF99 %2 = V_FMAC_F64_e32 4611686018427387904, %0, %1, implicit $mode, implicit $exec100 S_ENDPGM 0, implicit %1101...102 103# GCN-LABEL: name: test_fmaak_otherimm_src0_f64104# GFX90A: V_FMAC_F64_e32 4636737291354636288, %0, %2, implicit $mode, implicit $exec105# GFX1250: V_FMAMK_F64 %0, 4636737291354636288, %1, implicit $mode, implicit $exec106 107---108name: test_fmaak_otherimm_src0_f64109registers:110 - { id: 0, class: vreg_64_align2 }111 - { id: 1, class: vreg_64_align2 }112 - { id: 2, class: vreg_64_align2 }113body: |114 bb.0:115 116 %0 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec117 %1 = IMPLICIT_DEF118 %2 = V_FMAC_F64_e32 4636737291354636288, %0, %1, implicit $mode, implicit $exec119 120...121 122# GCN-LABEL: name: test_fmaak_other_constantlike_src0_f64123# GCN: V_FMAC_F64_e32 %stack.0, %0, %2, implicit $mode, implicit $exec124---125name: test_fmaak_other_constantlike_src0_f64126registers:127 - { id: 0, class: vreg_64_align2 }128 - { id: 1, class: vreg_64_align2 }129 - { id: 2, class: vreg_64_align2 }130stack:131 - { id: 0, name: "", type: default, offset: 0, size: 128, alignment: 8,132 callee-saved-register: '', local-offset: 0, debug-info-variable: '',133 debug-info-expression: '', debug-info-location: '' }134body: |135 bb.0:136 137 %0 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec138 %1 = IMPLICIT_DEF139 %2 = V_FMAC_F64_e32 %stack.0, %0, %1, implicit $mode, implicit $exec140 141...142 143# GCN-LABEL: name: test_fmamk_reg_unfoldable_literal_src0_f64144# GFX90A: V_FMA_F64_e64 0, %2, 0, killed %0, 0, killed %1, 0, 0, implicit $mode, implicit $exec145# GFX1250: V_FMAMK_F64 killed %0, 123456, killed %1, implicit $mode, implicit $exec146---147name: test_fmamk_reg_unfoldable_literal_src0_f64148registers:149 - { id: 0, class: vreg_64_align2 }150 - { id: 1, class: vreg_64_align2 }151 - { id: 2, class: vreg_64_align2 }152 - { id: 3, class: vreg_64_align2 }153body: |154 bb.0:155 156 %0 = IMPLICIT_DEF157 %1 = COPY %0158 %2 = V_MOV_B64_PSEUDO 123456, implicit $exec159 %3 = V_FMAC_F64_e32 %2, killed %0, killed %1, implicit $mode, implicit $exec160 161...162 163# GCN-LABEL: name: test_fmamk_reg_unfoldable_literal_src1_f64164# GFX90A: V_FMA_F64_e64 0, killed %0, 0, %2, 0, killed %1, 0, 0, implicit $mode, implicit $exec165# GFX1250: V_FMAMK_F64 killed %0, 123456, killed %1, implicit $mode, implicit $exec166---167name: test_fmamk_reg_unfoldable_literal_src1_f64168registers:169 - { id: 0, class: vreg_64_align2 }170 - { id: 1, class: vreg_64_align2 }171 - { id: 2, class: vreg_64_align2 }172 - { id: 3, class: vreg_64_align2 }173body: |174 bb.0:175 176 %0 = IMPLICIT_DEF177 %1 = COPY %0178 %2 = V_MOV_B64_PSEUDO 123456, implicit $exec179 %3 = V_FMAC_F64_e32 killed %0, %2, killed %1, implicit $mode, implicit $exec180 181...182 183# GCN-LABEL: name: test_fmaak_reg_unfoldable_literal_src2_f64184# GFX90A: V_FMA_F64_e64 0, killed %0, 0, killed %1, 0, %2, 0, 0, implicit $mode, implicit $exec185# GFX1250: V_FMAAK_F64 killed %0, killed %1, 123456, implicit $mode, implicit $exec186---187name: test_fmaak_reg_unfoldable_literal_src2_f64188registers:189 - { id: 0, class: vreg_64_align2 }190 - { id: 1, class: vreg_64_align2 }191 - { id: 2, class: vreg_64_align2 }192 - { id: 3, class: vreg_64_align2 }193body: |194 bb.0:195 196 %0 = IMPLICIT_DEF197 %1 = COPY %0198 %2 = V_MOV_B64_PSEUDO 123456, implicit $exec199 %3 = V_FMAC_F64_e32 killed %0, killed %1, %2, implicit $mode, implicit $exec200 S_ENDPGM 0, implicit %2201...202