287 lines · plain
1# RUN: llc -mtriple=amdgcn -run-pass peephole-opt -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s2# RUN: llc -mtriple=amdgcn -passes peephole-opt -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3...4# GCN-LABEL: name: no_fold_imm_madak_mac_clamp_f325# GCN: %23:vgpr_32 = V_MOV_B32_e32 1090519040, implicit $exec6# GCN-NEXT: %24:vgpr_32 = nofpexcept V_MAC_F32_e64 0, killed %19, 0, killed %21, 0, %23, 1, 0, implicit $mode, implicit $exec7 8name: no_fold_imm_madak_mac_clamp_f329tracksRegLiveness: true10registers:11 - { id: 0, class: sgpr_64 }12 - { id: 1, class: sreg_32_xm0 }13 - { id: 2, class: sgpr_32 }14 - { id: 3, class: vgpr_32 }15 - { id: 4, class: sreg_64_xexec }16 - { id: 5, class: sreg_64_xexec }17 - { id: 6, class: sreg_64_xexec }18 - { id: 7, class: sreg_32 }19 - { id: 8, class: sreg_32 }20 - { id: 9, class: sreg_32_xm0 }21 - { id: 10, class: sreg_64 }22 - { id: 11, class: sreg_32_xm0 }23 - { id: 12, class: sreg_32_xm0 }24 - { id: 13, class: sgpr_64 }25 - { id: 14, class: sgpr_128 }26 - { id: 15, class: sreg_32_xm0 }27 - { id: 16, class: sreg_64 }28 - { id: 17, class: sgpr_128 }29 - { id: 18, class: sgpr_128 }30 - { id: 19, class: vgpr_32 }31 - { id: 20, class: vreg_64 }32 - { id: 21, class: vgpr_32 }33 - { id: 22, class: vreg_64 }34 - { id: 23, class: vgpr_32 }35 - { id: 24, class: vgpr_32 }36 - { id: 25, class: vgpr_32 }37 - { id: 26, class: vreg_64 }38 - { id: 27, class: vgpr_32 }39 - { id: 28, class: vreg_64 }40 - { id: 29, class: vreg_64 }41liveins:42 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }43 - { reg: '$vgpr0', virtual-reg: '%3' }44body: |45 bb.0:46 liveins: $sgpr0_sgpr1, $vgpr047 48 %3 = COPY $vgpr049 %0 = COPY $sgpr0_sgpr150 %4 = S_LOAD_DWORDX2_IMM %0, 9, 051 %5 = S_LOAD_DWORDX2_IMM %0, 11, 052 %6 = S_LOAD_DWORDX2_IMM %0, 13, 053 %27 = V_ASHRREV_I32_e32 31, %3, implicit $exec54 %28 = REG_SEQUENCE %3, 1, %27, 255 %11 = S_MOV_B32 6144056 %12 = S_MOV_B32 057 %13 = REG_SEQUENCE killed %12, 1, killed %11, 258 %14 = REG_SEQUENCE killed %5, 17, %13, 1859 %15 = S_MOV_B32 260 %29 = V_LSHL_B64_e64 killed %28, killed %15, implicit $exec61 %17 = REG_SEQUENCE killed %6, 17, %13, 1862 %18 = REG_SEQUENCE killed %4, 17, %13, 1863 %20 = COPY %2964 %19 = BUFFER_LOAD_DWORD_ADDR64 %20, killed %14, 0, 0, 0, 0, implicit $exec65 %22 = COPY %2966 %21 = BUFFER_LOAD_DWORD_ADDR64 %22, killed %17, 0, 0, 0, 0, implicit $exec67 %23 = V_MOV_B32_e32 1090519040, implicit $exec68 %24 = nofpexcept V_MAC_F32_e64 0, killed %19, 0, killed %21, 0, %23, 1, 0, implicit $mode, implicit $exec69 %26 = COPY %2970 BUFFER_STORE_DWORD_ADDR64 killed %24, %26, killed %18, 0, 0, 0, 0, implicit $exec71 S_ENDPGM 072 73...74---75# GCN-LABEL: name: no_fold_imm_madak_mac_omod_f3276# GCN: %23:vgpr_32 = V_MOV_B32_e32 1090519040, implicit $exec77# GCN: %24:vgpr_32 = nofpexcept V_MAC_F32_e64 0, killed %19, 0, killed %21, 0, %23, 0, 2, implicit $mode, implicit $exec78 79name: no_fold_imm_madak_mac_omod_f3280tracksRegLiveness: true81registers:82 - { id: 0, class: sgpr_64 }83 - { id: 1, class: sreg_32_xm0 }84 - { id: 2, class: sgpr_32 }85 - { id: 3, class: vgpr_32 }86 - { id: 4, class: sreg_64_xexec }87 - { id: 5, class: sreg_64_xexec }88 - { id: 6, class: sreg_64_xexec }89 - { id: 7, class: sreg_32 }90 - { id: 8, class: sreg_32 }91 - { id: 9, class: sreg_32_xm0 }92 - { id: 10, class: sreg_64 }93 - { id: 11, class: sreg_32_xm0 }94 - { id: 12, class: sreg_32_xm0 }95 - { id: 13, class: sgpr_64 }96 - { id: 14, class: sgpr_128 }97 - { id: 15, class: sreg_32_xm0 }98 - { id: 16, class: sreg_64 }99 - { id: 17, class: sgpr_128 }100 - { id: 18, class: sgpr_128 }101 - { id: 19, class: vgpr_32 }102 - { id: 20, class: vreg_64 }103 - { id: 21, class: vgpr_32 }104 - { id: 22, class: vreg_64 }105 - { id: 23, class: vgpr_32 }106 - { id: 24, class: vgpr_32 }107 - { id: 25, class: vgpr_32 }108 - { id: 26, class: vreg_64 }109 - { id: 27, class: vgpr_32 }110 - { id: 28, class: vreg_64 }111 - { id: 29, class: vreg_64 }112liveins:113 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }114 - { reg: '$vgpr0', virtual-reg: '%3' }115body: |116 bb.0:117 liveins: $sgpr0_sgpr1, $vgpr0118 119 %3 = COPY $vgpr0120 %0 = COPY $sgpr0_sgpr1121 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0122 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0123 %6 = S_LOAD_DWORDX2_IMM %0, 13, 0124 %27 = V_ASHRREV_I32_e32 31, %3, implicit $exec125 %28 = REG_SEQUENCE %3, 1, %27, 2126 %11 = S_MOV_B32 61440127 %12 = S_MOV_B32 0128 %13 = REG_SEQUENCE killed %12, 1, killed %11, 2129 %14 = REG_SEQUENCE killed %5, 17, %13, 18130 %15 = S_MOV_B32 2131 %29 = V_LSHL_B64_e64 killed %28, killed %15, implicit $exec132 %17 = REG_SEQUENCE killed %6, 17, %13, 18133 %18 = REG_SEQUENCE killed %4, 17, %13, 18134 %20 = COPY %29135 %19 = BUFFER_LOAD_DWORD_ADDR64 %20, killed %14, 0, 0, 0, 0, implicit $exec136 %22 = COPY %29137 %21 = BUFFER_LOAD_DWORD_ADDR64 %22, killed %17, 0, 0, 0, 0, implicit $exec138 %23 = V_MOV_B32_e32 1090519040, implicit $exec139 %24 = nofpexcept V_MAC_F32_e64 0, killed %19, 0, killed %21, 0, %23, 0, 2, implicit $mode, implicit $exec140 %26 = COPY %29141 BUFFER_STORE_DWORD_ADDR64 killed %24, %26, killed %18, 0, 0, 0, 0, implicit $exec142 S_ENDPGM 0143 144...145---146# GCN: name: no_fold_imm_madak_mad_clamp_f32147# GCN: %23:vgpr_32 = V_MOV_B32_e32 1090519040, implicit $exec148# GCN: %24:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %19, 0, killed %21, 0, %23, 1, 0, implicit $mode, implicit $exec149 150name: no_fold_imm_madak_mad_clamp_f32151tracksRegLiveness: true152registers:153 - { id: 0, class: sgpr_64 }154 - { id: 1, class: sreg_32_xm0 }155 - { id: 2, class: sgpr_32 }156 - { id: 3, class: vgpr_32 }157 - { id: 4, class: sreg_64_xexec }158 - { id: 5, class: sreg_64_xexec }159 - { id: 6, class: sreg_64_xexec }160 - { id: 7, class: sreg_32 }161 - { id: 8, class: sreg_32 }162 - { id: 9, class: sreg_32_xm0 }163 - { id: 10, class: sreg_64 }164 - { id: 11, class: sreg_32_xm0 }165 - { id: 12, class: sreg_32_xm0 }166 - { id: 13, class: sgpr_64 }167 - { id: 14, class: sgpr_128 }168 - { id: 15, class: sreg_32_xm0 }169 - { id: 16, class: sreg_64 }170 - { id: 17, class: sgpr_128 }171 - { id: 18, class: sgpr_128 }172 - { id: 19, class: vgpr_32 }173 - { id: 20, class: vreg_64 }174 - { id: 21, class: vgpr_32 }175 - { id: 22, class: vreg_64 }176 - { id: 23, class: vgpr_32 }177 - { id: 24, class: vgpr_32 }178 - { id: 25, class: vgpr_32 }179 - { id: 26, class: vreg_64 }180 - { id: 27, class: vgpr_32 }181 - { id: 28, class: vreg_64 }182 - { id: 29, class: vreg_64 }183liveins:184 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }185 - { reg: '$vgpr0', virtual-reg: '%3' }186body: |187 bb.0:188 liveins: $sgpr0_sgpr1, $vgpr0189 190 %3 = COPY $vgpr0191 %0 = COPY $sgpr0_sgpr1192 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0193 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0194 %6 = S_LOAD_DWORDX2_IMM %0, 13, 0195 %27 = V_ASHRREV_I32_e32 31, %3, implicit $exec196 %28 = REG_SEQUENCE %3, 1, %27, 2197 %11 = S_MOV_B32 61440198 %12 = S_MOV_B32 0199 %13 = REG_SEQUENCE killed %12, 1, killed %11, 2200 %14 = REG_SEQUENCE killed %5, 17, %13, 18201 %15 = S_MOV_B32 2202 %29 = V_LSHL_B64_e64 killed %28, killed %15, implicit $exec203 %17 = REG_SEQUENCE killed %6, 17, %13, 18204 %18 = REG_SEQUENCE killed %4, 17, %13, 18205 %20 = COPY %29206 %19 = BUFFER_LOAD_DWORD_ADDR64 %20, killed %14, 0, 0, 0, 0, implicit $exec207 %22 = COPY %29208 %21 = BUFFER_LOAD_DWORD_ADDR64 %22, killed %17, 0, 0, 0, 0, implicit $exec209 %23 = V_MOV_B32_e32 1090519040, implicit $exec210 %24 = nofpexcept V_MAD_F32_e64 0, killed %19, 0, killed %21, 0, %23, 1, 0, implicit $mode, implicit $exec211 %26 = COPY %29212 BUFFER_STORE_DWORD_ADDR64 killed %24, %26, killed %18, 0, 0, 0, 0, implicit $exec213 S_ENDPGM 0214 215...216---217# GCN: name: no_fold_imm_madak_mad_omod_f32218# GCN: %23:vgpr_32 = V_MOV_B32_e32 1090519040, implicit $exec219# GCN: %24:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %19, 0, killed %21, 0, %23, 0, 1, implicit $mode, implicit $exec220 221name: no_fold_imm_madak_mad_omod_f32222tracksRegLiveness: true223registers:224 - { id: 0, class: sgpr_64 }225 - { id: 1, class: sreg_32_xm0 }226 - { id: 2, class: sgpr_32 }227 - { id: 3, class: vgpr_32 }228 - { id: 4, class: sreg_64_xexec }229 - { id: 5, class: sreg_64_xexec }230 - { id: 6, class: sreg_64_xexec }231 - { id: 7, class: sreg_32 }232 - { id: 8, class: sreg_32 }233 - { id: 9, class: sreg_32_xm0 }234 - { id: 10, class: sreg_64 }235 - { id: 11, class: sreg_32_xm0 }236 - { id: 12, class: sreg_32_xm0 }237 - { id: 13, class: sgpr_64 }238 - { id: 14, class: sgpr_128 }239 - { id: 15, class: sreg_32_xm0 }240 - { id: 16, class: sreg_64 }241 - { id: 17, class: sgpr_128 }242 - { id: 18, class: sgpr_128 }243 - { id: 19, class: vgpr_32 }244 - { id: 20, class: vreg_64 }245 - { id: 21, class: vgpr_32 }246 - { id: 22, class: vreg_64 }247 - { id: 23, class: vgpr_32 }248 - { id: 24, class: vgpr_32 }249 - { id: 25, class: vgpr_32 }250 - { id: 26, class: vreg_64 }251 - { id: 27, class: vgpr_32 }252 - { id: 28, class: vreg_64 }253 - { id: 29, class: vreg_64 }254liveins:255 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }256 - { reg: '$vgpr0', virtual-reg: '%3' }257body: |258 bb.0:259 liveins: $sgpr0_sgpr1, $vgpr0260 261 %3 = COPY $vgpr0262 %0 = COPY $sgpr0_sgpr1263 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0264 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0265 %6 = S_LOAD_DWORDX2_IMM %0, 13, 0266 %27 = V_ASHRREV_I32_e32 31, %3, implicit $exec267 %28 = REG_SEQUENCE %3, 1, %27, 2268 %11 = S_MOV_B32 61440269 %12 = S_MOV_B32 0270 %13 = REG_SEQUENCE killed %12, 1, killed %11, 2271 %14 = REG_SEQUENCE killed %5, 17, %13, 18272 %15 = S_MOV_B32 2273 %29 = V_LSHL_B64_e64 killed %28, killed %15, implicit $exec274 %17 = REG_SEQUENCE killed %6, 17, %13, 18275 %18 = REG_SEQUENCE killed %4, 17, %13, 18276 %20 = COPY %29277 %19 = BUFFER_LOAD_DWORD_ADDR64 %20, killed %14, 0, 0, 0, 0, implicit $exec278 %22 = COPY %29279 %21 = BUFFER_LOAD_DWORD_ADDR64 %22, killed %17, 0, 0, 0, 0, implicit $exec280 %23 = V_MOV_B32_e32 1090519040, implicit $exec281 %24 = nofpexcept V_MAD_F32_e64 0, killed %19, 0, killed %21, 0, %23, 0, 1, implicit $mode, implicit $exec282 %26 = COPY %29283 BUFFER_STORE_DWORD_ADDR64 killed %24, %26, killed %18, 0, 0, 0, 0, implicit $exec284 S_ENDPGM 0285 286...287