250 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx900 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck -check-prefix=GCN %s2# RUN: llc -mtriple=amdgcn -mcpu=gfx900 %s --passes=two-address-instruction -verify-each -o - | FileCheck -check-prefix=GCN %s3 4# GCN-LABEL: name: test_madmk_reg_imm_f325# GCN: V_MADMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec6---7name: test_madmk_reg_imm_f328registers:9 - { id: 0, class: vreg_64 }10 - { id: 1, class: vgpr_32 }11 - { id: 2, class: vgpr_32 }12 - { id: 3, class: vgpr_32 }13body: |14 bb.0:15 16 %0 = IMPLICIT_DEF17 %1 = COPY %0.sub118 %2 = V_MOV_B32_e32 1078523331, implicit $exec19 %3 = V_MAC_F32_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec20 21...22 23# GCN-LABEL: name: test_madmk_imm_reg_f3224# GCN: V_MADMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec25---26name: test_madmk_imm_reg_f3227registers:28 - { id: 0, class: vreg_64 }29 - { id: 1, class: vgpr_32 }30 - { id: 2, class: vgpr_32 }31 - { id: 3, class: vgpr_32 }32body: |33 bb.0:34 35 %0 = IMPLICIT_DEF36 %1 = COPY %0.sub137 %2 = V_MOV_B32_e32 1078523331, implicit $exec38 %3 = V_MAC_F32_e32 %2, killed %0.sub0, killed %1, implicit $mode, implicit $exec39 40...41 42# GCN-LABEL: name: test_madak_f3243# GCN: V_MADAK_F32 killed %0.sub0, %0.sub1, 1078523331, implicit $mode, implicit $exec44---45name: test_madak_f3246registers:47 - { id: 0, class: vreg_64 }48 - { id: 1, class: vgpr_32 }49 - { id: 2, class: vgpr_32 }50body: |51 bb.0:52 53 %0 = IMPLICIT_DEF54 %1 = V_MOV_B32_e32 1078523331, implicit $exec55 %2 = V_MAC_F32_e32 killed %0.sub0, %0.sub1, %1, implicit $mode, implicit $exec56 S_ENDPGM 0, implicit %157...58 59# GCN-LABEL: name: test_madmk_reg_imm_f1660# GCN: V_MADMK_F16 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec61---62name: test_madmk_reg_imm_f1663registers:64 - { id: 0, class: vreg_64 }65 - { id: 1, class: vgpr_32 }66 - { id: 2, class: vgpr_32 }67 - { id: 3, class: vgpr_32 }68body: |69 bb.0:70 71 %0 = IMPLICIT_DEF72 %1 = COPY %0.sub173 %2 = V_MOV_B32_e32 1078523331, implicit $exec74 %3 = V_MAC_F16_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec75 76...77 78# GCN-LABEL: name: test_madmk_imm_reg_f1679# GCN: V_MADMK_F16 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec80---81name: test_madmk_imm_reg_f1682registers:83 - { id: 0, class: vreg_64 }84 - { id: 1, class: vgpr_32 }85 - { id: 2, class: vgpr_32 }86 - { id: 3, class: vgpr_32 }87body: |88 bb.0:89 90 %0 = IMPLICIT_DEF91 %1 = COPY %0.sub192 %2 = V_MOV_B32_e32 1078523331, implicit $exec93 %3 = V_MAC_F16_e32 %2, killed %0.sub0, killed %1, implicit $mode, implicit $exec94 95...96 97# GCN-LABEL: name: test_madak_f1698# GCN: V_MADAK_F16 killed %0.sub0, %0.sub1, 1078523331, implicit $mode, implicit $exec99---100name: test_madak_f16101registers:102 - { id: 0, class: vreg_64 }103 - { id: 1, class: vgpr_32 }104 - { id: 2, class: vgpr_32 }105body: |106 bb.0:107 108 %0 = IMPLICIT_DEF109 %1 = V_MOV_B32_e32 1078523331, implicit $exec110 %2 = V_MAC_F16_e32 killed %0.sub0, %0.sub1, %1, implicit $mode, implicit $exec111 S_ENDPGM 0, implicit %1112...113 114# Make sure constant bus restriction isn't violated if src0 is an SGPR.115 116# GCN-LABEL: name: test_madak_sgpr_src0_f32117# GCN: %1:vgpr_32 = V_MOV_B32_e32 1078523331, implicit $exec118# GCN: %3:vgpr_32 = V_MAD_F32_e64 0, killed %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec119 120---121name: test_madak_sgpr_src0_f32122registers:123 - { id: 0, class: sreg_32_xm0 }124 - { id: 1, class: vgpr_32}125 - { id: 2, class: vgpr_32 }126 - { id: 3, class: vgpr_32 }127body: |128 bb.0:129 130 %0 = IMPLICIT_DEF131 %1 = V_MOV_B32_e32 1078523331, implicit $exec132 %2 = IMPLICIT_DEF133 %3 = V_MAC_F32_e32 killed %0, %1, %2, implicit $mode, implicit $exec134 S_ENDPGM 0, implicit %2135...136 137# This can still fold if this is an inline immediate.138 139# GCN-LABEL: name: test_madak_inlineimm_src0_f32140# GCN: %2:vgpr_32 = V_MADMK_F32 1073741824, 1078523331, %1, implicit $mode, implicit $exec141 142---143name: test_madak_inlineimm_src0_f32144registers:145 - { id: 0, class: vgpr_32}146 - { id: 1, class: vgpr_32 }147 - { id: 2, class: vgpr_32 }148body: |149 bb.0:150 151 %0 = V_MOV_B32_e32 1078523331, implicit $exec152 %1 = IMPLICIT_DEF153 %2 = V_MAC_F32_e32 1073741824, %0, %1, implicit $mode, implicit $exec154 S_ENDPGM 0, implicit %1155...156# Non-inline immediate uses constant bus already.157 158# GCN-LABEL: name: test_madak_otherimm_src0_f32159# GCN: %2:vgpr_32 = V_MADMK_F32 %0, 1120403456, %1, implicit $mode, implicit $exec160 161---162name: test_madak_otherimm_src0_f32163registers:164 - { id: 0, class: vgpr_32}165 - { id: 1, class: vgpr_32 }166 - { id: 2, class: vgpr_32 }167body: |168 bb.0:169 170 %0 = V_MOV_B32_e32 1078523331, implicit $exec171 %1 = IMPLICIT_DEF172 %2 = V_MAC_F32_e32 1120403456, %0, %1, implicit $mode, implicit $exec173 S_ENDPGM 0, implicit %1174...175# Non-inline immediate uses constant bus already.176 177# GCN-LABEL: name: test_madak_other_constantlike_src0_f32178# GCN: %2:vgpr_32 = V_MAC_F32_e32 %stack.0, %0, %2, implicit $mode, implicit $exec179---180name: test_madak_other_constantlike_src0_f32181registers:182 - { id: 0, class: vgpr_32}183 - { id: 1, class: vgpr_32 }184 - { id: 2, class: vgpr_32 }185stack:186 - { id: 0, name: "", type: default, offset: 0, size: 128, alignment: 8,187 callee-saved-register: '', local-offset: 0, debug-info-variable: '',188 debug-info-expression: '', debug-info-location: '' }189body: |190 bb.0:191 192 %0 = V_MOV_B32_e32 1078523331, implicit $exec193 %1 = IMPLICIT_DEF194 %2 = V_MAC_F32_e32 %stack.0, %0, %1, implicit $mode, implicit $exec195 196...197 198# GCN-LABEL: name: test_madak_inline_literal_f16199# GCN: %2:vgpr_32 = V_MADAK_F16 16384, killed %0, 49664, implicit $mode, implicit $exec200 201---202name: test_madak_inline_literal_f16203body: |204 bb.0:205 %3:vgpr_32 = COPY killed $vgpr0206 207 %26:vgpr_32 = V_MOV_B32_e32 49664, implicit $exec208 %28:vgpr_32 = V_MAC_F16_e32 16384, killed %3, %26, implicit $mode, implicit $exec209 S_ENDPGM 0, implicit %26210...211 212# GCN-LABEL: name: test_mad_src0mods213# GCN: %3:vgpr_32 = V_MAD_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec214---215name: test_mad_src0mods216body: |217 bb.0:218 %0:vgpr_32 = IMPLICIT_DEF219 %1:vgpr_32 = IMPLICIT_DEF220 %2:vgpr_32 = IMPLICIT_DEF221 %3:vgpr_32 = V_MAC_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec222 S_ENDPGM 0, implicit %2223...224 225# GCN-LABEL: name: test_mad_src1mods226# GCN: %3:vgpr_32 = V_MAD_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec227---228name: test_mad_src1mods229body: |230 bb.0:231 %0:vgpr_32 = IMPLICIT_DEF232 %1:vgpr_32 = IMPLICIT_DEF233 %2:vgpr_32 = IMPLICIT_DEF234 %3:vgpr_32 = V_MAC_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec235 S_ENDPGM 0, implicit %2236...237 238# GCN-LABEL: name: test_mad_src2mods239# GCN: %3:vgpr_32 = V_MAD_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec240---241name: test_mad_src2mods242body: |243 bb.0:244 %0:vgpr_32 = IMPLICIT_DEF245 %1:vgpr_32 = IMPLICIT_DEF246 %2:vgpr_32 = IMPLICIT_DEF247 %3:vgpr_32 = V_MAC_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec248 S_ENDPGM 0, implicit %2249...250