214 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX6 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s4 5---6 7name: fmad_f328legalized: true9regBankSelected: true10 11body: |12 bb.0:13 liveins: $vgpr0, $vgpr1, $vgpr214 15 ; GFX6-LABEL: name: fmad_f3216 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr217 ; GFX6-NEXT: {{ $}}18 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr019 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr120 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr221 ; GFX6-NEXT: [[V_MAC_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAC_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec22 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAC_F32_e64_]]23 ; GFX10-LABEL: name: fmad_f3224 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr225 ; GFX10-NEXT: {{ $}}26 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr027 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr128 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr229 ; GFX10-NEXT: [[V_MAC_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAC_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec30 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAC_F32_e64_]]31 %0:vgpr(s32) = COPY $vgpr032 %1:vgpr(s32) = COPY $vgpr133 %2:vgpr(s32) = COPY $vgpr234 %3:vgpr(s32) = G_FMAD %0, %1, %235 S_ENDPGM 0, implicit %336 37...38 39---40 41name: fmad_f32_fneg_src042legalized: true43regBankSelected: true44 45body: |46 bb.0:47 liveins: $vgpr0, $vgpr1, $vgpr248 49 ; GFX6-LABEL: name: fmad_f32_fneg_src050 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr251 ; GFX6-NEXT: {{ $}}52 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr053 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr154 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr255 ; GFX6-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 1, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec56 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]57 ; GFX10-LABEL: name: fmad_f32_fneg_src058 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr259 ; GFX10-NEXT: {{ $}}60 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr061 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr162 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr263 ; GFX10-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 1, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec64 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]65 %0:vgpr(s32) = COPY $vgpr066 %1:vgpr(s32) = COPY $vgpr167 %2:vgpr(s32) = COPY $vgpr268 %3:vgpr(s32) = G_FNEG %069 %4:vgpr(s32) = G_FMAD %3, %1, %270 S_ENDPGM 0, implicit %471 72...73 74---75 76name: fmad_f32_fneg_src177legalized: true78regBankSelected: true79 80body: |81 bb.0:82 liveins: $vgpr0, $vgpr1, $vgpr283 84 ; GFX6-LABEL: name: fmad_f32_fneg_src185 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr286 ; GFX6-NEXT: {{ $}}87 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr088 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr189 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr290 ; GFX6-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 1, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec91 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]92 ; GFX10-LABEL: name: fmad_f32_fneg_src193 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr294 ; GFX10-NEXT: {{ $}}95 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr096 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr197 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr298 ; GFX10-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 1, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec99 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]100 %0:vgpr(s32) = COPY $vgpr0101 %1:vgpr(s32) = COPY $vgpr1102 %2:vgpr(s32) = COPY $vgpr2103 %3:vgpr(s32) = G_FNEG %1104 %4:vgpr(s32) = G_FMAD %0, %3, %2105 S_ENDPGM 0, implicit %4106 107...108 109---110 111name: fmad_f32_fneg_src2112legalized: true113regBankSelected: true114 115body: |116 bb.0:117 liveins: $vgpr0, $vgpr1, $vgpr2118 119 ; GFX6-LABEL: name: fmad_f32_fneg_src2120 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2121 ; GFX6-NEXT: {{ $}}122 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0123 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1124 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2125 ; GFX6-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec126 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]127 ; GFX10-LABEL: name: fmad_f32_fneg_src2128 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2129 ; GFX10-NEXT: {{ $}}130 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0131 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1132 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2133 ; GFX10-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec134 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]135 %0:vgpr(s32) = COPY $vgpr0136 %1:vgpr(s32) = COPY $vgpr1137 %2:vgpr(s32) = COPY $vgpr2138 %3:vgpr(s32) = G_FNEG %2139 %4:vgpr(s32) = G_FMAD %0, %1, %3140 S_ENDPGM 0, implicit %4141 142...143 144---145 146name: fmad_f32_fabs_src2147legalized: true148regBankSelected: true149 150body: |151 bb.0:152 liveins: $vgpr0, $vgpr1, $vgpr2153 154 ; GFX6-LABEL: name: fmad_f32_fabs_src2155 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2156 ; GFX6-NEXT: {{ $}}157 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0158 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1159 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2160 ; GFX6-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 2, [[COPY2]], 0, 0, implicit $mode, implicit $exec161 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]162 ; GFX10-LABEL: name: fmad_f32_fabs_src2163 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2164 ; GFX10-NEXT: {{ $}}165 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0166 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1167 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2168 ; GFX10-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 2, [[COPY2]], 0, 0, implicit $mode, implicit $exec169 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]170 %0:vgpr(s32) = COPY $vgpr0171 %1:vgpr(s32) = COPY $vgpr1172 %2:vgpr(s32) = COPY $vgpr2173 %3:vgpr(s32) = G_FABS %2174 %4:vgpr(s32) = G_FMAD %0, %1, %3175 S_ENDPGM 0, implicit %4176 177...178 179---180 181name: fmad_f32_copy_fneg_src2182legalized: true183regBankSelected: true184 185body: |186 bb.0:187 liveins: $vgpr0, $vgpr1, $vgpr2188 189 ; GFX6-LABEL: name: fmad_f32_copy_fneg_src2190 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2191 ; GFX6-NEXT: {{ $}}192 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0193 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1194 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2195 ; GFX6-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec196 ; GFX6-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]197 ; GFX10-LABEL: name: fmad_f32_copy_fneg_src2198 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2199 ; GFX10-NEXT: {{ $}}200 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0201 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1202 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2203 ; GFX10-NEXT: [[V_MAD_F32_e64_:%[0-9]+]]:vgpr_32 = V_MAD_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec204 ; GFX10-NEXT: S_ENDPGM 0, implicit [[V_MAD_F32_e64_]]205 %0:vgpr(s32) = COPY $vgpr0206 %1:vgpr(s32) = COPY $vgpr1207 %2:vgpr(s32) = COPY $vgpr2208 %3:vgpr(s32) = G_FNEG %2209 %4:vgpr(s32) = COPY %3210 %5:vgpr(s32) = G_FMAD %0, %1, %4211 S_ENDPGM 0, implicit %5212 213...214