264 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=gfx906 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX9-DL %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX10 %s6 7---8 9name: fma_f3210legalized: true11regBankSelected: true12 13body: |14 bb.0:15 liveins: $vgpr0, $vgpr1, $vgpr216 17 ; GFX6-LABEL: name: fma_f3218 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr219 ; GFX6-NEXT: {{ $}}20 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr021 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr122 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr223 ; GFX6-NEXT: %3:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec24 ; GFX6-NEXT: S_ENDPGM 0, implicit %325 ; GFX9-DL-LABEL: name: fma_f3226 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr227 ; GFX9-DL-NEXT: {{ $}}28 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr029 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr130 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr231 ; GFX9-DL-NEXT: %3:vgpr_32 = nofpexcept V_FMAC_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec32 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %333 ; GFX10-LABEL: name: fma_f3234 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr235 ; GFX10-NEXT: {{ $}}36 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr037 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr138 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr239 ; GFX10-NEXT: %3:vgpr_32 = nofpexcept V_FMAC_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec40 ; GFX10-NEXT: S_ENDPGM 0, implicit %341 %0:vgpr(s32) = COPY $vgpr042 %1:vgpr(s32) = COPY $vgpr143 %2:vgpr(s32) = COPY $vgpr244 %3:vgpr(s32) = G_FMA %0, %1, %245 S_ENDPGM 0, implicit %346 47...48 49---50 51name: fma_f32_fneg_src052legalized: true53regBankSelected: true54 55body: |56 bb.0:57 liveins: $vgpr0, $vgpr1, $vgpr258 59 ; GFX6-LABEL: name: fma_f32_fneg_src060 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr261 ; GFX6-NEXT: {{ $}}62 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr063 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr164 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr265 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 1, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec66 ; GFX6-NEXT: S_ENDPGM 0, implicit %467 ; GFX9-DL-LABEL: name: fma_f32_fneg_src068 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr269 ; GFX9-DL-NEXT: {{ $}}70 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr071 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr172 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr273 ; GFX9-DL-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 1, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec74 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %475 ; GFX10-LABEL: name: fma_f32_fneg_src076 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr277 ; GFX10-NEXT: {{ $}}78 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr079 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr180 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr281 ; GFX10-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 1, [[COPY]], 0, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec82 ; GFX10-NEXT: S_ENDPGM 0, implicit %483 %0:vgpr(s32) = COPY $vgpr084 %1:vgpr(s32) = COPY $vgpr185 %2:vgpr(s32) = COPY $vgpr286 %3:vgpr(s32) = G_FNEG %087 %4:vgpr(s32) = G_FMA %3, %1, %288 S_ENDPGM 0, implicit %489 90...91 92---93 94name: fma_f32_fneg_src195legalized: true96regBankSelected: true97 98body: |99 bb.0:100 liveins: $vgpr0, $vgpr1, $vgpr2101 102 ; GFX6-LABEL: name: fma_f32_fneg_src1103 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2104 ; GFX6-NEXT: {{ $}}105 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0106 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1107 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2108 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 1, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec109 ; GFX6-NEXT: S_ENDPGM 0, implicit %4110 ; GFX9-DL-LABEL: name: fma_f32_fneg_src1111 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr2112 ; GFX9-DL-NEXT: {{ $}}113 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0114 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1115 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2116 ; GFX9-DL-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 1, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec117 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %4118 ; GFX10-LABEL: name: fma_f32_fneg_src1119 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2120 ; GFX10-NEXT: {{ $}}121 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0122 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1123 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2124 ; GFX10-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 1, [[COPY1]], 0, [[COPY2]], 0, 0, implicit $mode, implicit $exec125 ; GFX10-NEXT: S_ENDPGM 0, implicit %4126 %0:vgpr(s32) = COPY $vgpr0127 %1:vgpr(s32) = COPY $vgpr1128 %2:vgpr(s32) = COPY $vgpr2129 %3:vgpr(s32) = G_FNEG %1130 %4:vgpr(s32) = G_FMA %0, %3, %2131 S_ENDPGM 0, implicit %4132 133...134 135---136 137name: fma_f32_fneg_src2138legalized: true139regBankSelected: true140 141body: |142 bb.0:143 liveins: $vgpr0, $vgpr1, $vgpr2144 145 ; GFX6-LABEL: name: fma_f32_fneg_src2146 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2147 ; GFX6-NEXT: {{ $}}148 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0149 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1150 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2151 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec152 ; GFX6-NEXT: S_ENDPGM 0, implicit %4153 ; GFX9-DL-LABEL: name: fma_f32_fneg_src2154 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr2155 ; GFX9-DL-NEXT: {{ $}}156 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0157 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1158 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2159 ; GFX9-DL-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec160 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %4161 ; GFX10-LABEL: name: fma_f32_fneg_src2162 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2163 ; GFX10-NEXT: {{ $}}164 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0165 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1166 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2167 ; GFX10-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec168 ; GFX10-NEXT: S_ENDPGM 0, implicit %4169 %0:vgpr(s32) = COPY $vgpr0170 %1:vgpr(s32) = COPY $vgpr1171 %2:vgpr(s32) = COPY $vgpr2172 %3:vgpr(s32) = G_FNEG %2173 %4:vgpr(s32) = G_FMA %0, %1, %3174 S_ENDPGM 0, implicit %4175 176...177 178---179 180name: fma_f32_fabs_src2181legalized: true182regBankSelected: true183 184body: |185 bb.0:186 liveins: $vgpr0, $vgpr1, $vgpr2187 188 ; GFX6-LABEL: name: fma_f32_fabs_src2189 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2190 ; GFX6-NEXT: {{ $}}191 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0192 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1193 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2194 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 2, [[COPY2]], 0, 0, implicit $mode, implicit $exec195 ; GFX6-NEXT: S_ENDPGM 0, implicit %4196 ; GFX9-DL-LABEL: name: fma_f32_fabs_src2197 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr2198 ; GFX9-DL-NEXT: {{ $}}199 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0200 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1201 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2202 ; GFX9-DL-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 2, [[COPY2]], 0, 0, implicit $mode, implicit $exec203 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %4204 ; GFX10-LABEL: name: fma_f32_fabs_src2205 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2206 ; GFX10-NEXT: {{ $}}207 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0208 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1209 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2210 ; GFX10-NEXT: %4:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 2, [[COPY2]], 0, 0, implicit $mode, implicit $exec211 ; GFX10-NEXT: S_ENDPGM 0, implicit %4212 %0:vgpr(s32) = COPY $vgpr0213 %1:vgpr(s32) = COPY $vgpr1214 %2:vgpr(s32) = COPY $vgpr2215 %3:vgpr(s32) = G_FABS %2216 %4:vgpr(s32) = G_FMA %0, %1, %3217 S_ENDPGM 0, implicit %4218 219...220 221---222 223name: fma_f32_copy_fneg_src2224legalized: true225regBankSelected: true226 227body: |228 bb.0:229 liveins: $vgpr0, $vgpr1, $vgpr2230 231 ; GFX6-LABEL: name: fma_f32_copy_fneg_src2232 ; GFX6: liveins: $vgpr0, $vgpr1, $vgpr2233 ; GFX6-NEXT: {{ $}}234 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0235 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1236 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2237 ; GFX6-NEXT: %5:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec238 ; GFX6-NEXT: S_ENDPGM 0, implicit %5239 ; GFX9-DL-LABEL: name: fma_f32_copy_fneg_src2240 ; GFX9-DL: liveins: $vgpr0, $vgpr1, $vgpr2241 ; GFX9-DL-NEXT: {{ $}}242 ; GFX9-DL-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0243 ; GFX9-DL-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1244 ; GFX9-DL-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2245 ; GFX9-DL-NEXT: %5:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec246 ; GFX9-DL-NEXT: S_ENDPGM 0, implicit %5247 ; GFX10-LABEL: name: fma_f32_copy_fneg_src2248 ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2249 ; GFX10-NEXT: {{ $}}250 ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0251 ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1252 ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2253 ; GFX10-NEXT: %5:vgpr_32 = nofpexcept V_FMA_F32_e64 0, [[COPY]], 0, [[COPY1]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec254 ; GFX10-NEXT: S_ENDPGM 0, implicit %5255 %0:vgpr(s32) = COPY $vgpr0256 %1:vgpr(s32) = COPY $vgpr1257 %2:vgpr(s32) = COPY $vgpr2258 %3:vgpr(s32) = G_FNEG %2259 %4:vgpr(s32) = COPY %3260 %5:vgpr(s32) = G_FMA %0, %1, %4261 S_ENDPGM 0, implicit %5262 263...264