317 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -o - %s | FileCheck -check-prefix=GFX6 %s3 4---5 6name: fadd_s32_vvv7legalized: true8regBankSelected: true9 10body: |11 bb.0:12 liveins: $vgpr0, $vgpr113 ; GFX6-LABEL: name: fadd_s32_vvv14 ; GFX6: liveins: $vgpr0, $vgpr115 ; GFX6-NEXT: {{ $}}16 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr017 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr118 ; GFX6-NEXT: %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec19 ; GFX6-NEXT: S_ENDPGM 0, implicit %220 %0:vgpr(s32) = COPY $vgpr021 %1:vgpr(s32) = COPY $vgpr122 %2:vgpr(s32) = G_FADD %0, %123 S_ENDPGM 0, implicit %224 25...26 27---28 29name: fadd_s32_vsv30legalized: true31regBankSelected: true32 33body: |34 bb.0:35 liveins: $vgpr0, $sgpr036 ; GFX6-LABEL: name: fadd_s32_vsv37 ; GFX6: liveins: $vgpr0, $sgpr038 ; GFX6-NEXT: {{ $}}39 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr040 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr041 ; GFX6-NEXT: %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec42 ; GFX6-NEXT: S_ENDPGM 0, implicit %243 %0:sgpr(s32) = COPY $sgpr044 %1:vgpr(s32) = COPY $vgpr045 %2:vgpr(s32) = G_FADD %0, %146 S_ENDPGM 0, implicit %247 48...49 50---51 52name: fadd_s32_vvs53legalized: true54regBankSelected: true55 56body: |57 bb.0:58 liveins: $vgpr0, $sgpr059 ; GFX6-LABEL: name: fadd_s32_vvs60 ; GFX6: liveins: $vgpr0, $sgpr061 ; GFX6-NEXT: {{ $}}62 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr063 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr064 ; GFX6-NEXT: %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec65 ; GFX6-NEXT: S_ENDPGM 0, implicit %266 %0:vgpr(s32) = COPY $vgpr067 %1:sgpr(s32) = COPY $sgpr068 %2:vgpr(s32) = G_FADD %0, %169 S_ENDPGM 0, implicit %270 71...72 73---74 75name: fadd_s32_vvv_fabs_lhs76legalized: true77regBankSelected: true78 79body: |80 bb.0:81 liveins: $vgpr0, $vgpr182 ; GFX6-LABEL: name: fadd_s32_vvv_fabs_lhs83 ; GFX6: liveins: $vgpr0, $vgpr184 ; GFX6-NEXT: {{ $}}85 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr086 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr187 ; GFX6-NEXT: %3:vgpr_32 = nofpexcept V_ADD_F32_e64 2, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec88 ; GFX6-NEXT: S_ENDPGM 0, implicit %389 %0:vgpr(s32) = COPY $vgpr090 %1:vgpr(s32) = COPY $vgpr191 %2:vgpr(s32) = G_FABS %092 %3:vgpr(s32) = G_FADD %2, %193 S_ENDPGM 0, implicit %394 95...96 97---98 99name: fadd_s32_vvv_fabs_rhs100legalized: true101regBankSelected: true102 103body: |104 bb.0:105 liveins: $vgpr0, $vgpr1106 ; GFX6-LABEL: name: fadd_s32_vvv_fabs_rhs107 ; GFX6: liveins: $vgpr0, $vgpr1108 ; GFX6-NEXT: {{ $}}109 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1110 ; GFX6-NEXT: %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 2, [[COPY]], 0, 0, implicit $mode, implicit $exec111 ; GFX6-NEXT: S_ENDPGM 0, implicit %3112 %0:vgpr(s32) = COPY $vgpr0113 %1:vgpr(s32) = COPY $vgpr1114 %2:vgpr(s32) = G_FABS %1115 %3:vgpr(s32) = G_FADD %1, %2116 S_ENDPGM 0, implicit %3117 118...119 120---121 122name: fadd_s32_vvv_fneg_fabs_lhs123legalized: true124regBankSelected: true125 126body: |127 bb.0:128 liveins: $vgpr0, $vgpr1129 ; GFX6-LABEL: name: fadd_s32_vvv_fneg_fabs_lhs130 ; GFX6: liveins: $vgpr0, $vgpr1131 ; GFX6-NEXT: {{ $}}132 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0133 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1134 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_ADD_F32_e64 3, [[COPY]], 0, [[COPY1]], 0, 0, implicit $mode, implicit $exec135 ; GFX6-NEXT: S_ENDPGM 0, implicit %4136 %0:vgpr(s32) = COPY $vgpr0137 %1:vgpr(s32) = COPY $vgpr1138 %2:vgpr(s32) = G_FABS %0139 %3:vgpr(s32) = G_FNEG %2140 %4:vgpr(s32) = G_FADD %3, %1141 S_ENDPGM 0, implicit %4142 143...144 145---146 147name: fadd_s32_vvv_fneg_fabs_rhs148legalized: true149regBankSelected: true150 151body: |152 bb.0:153 liveins: $vgpr0, $vgpr1154 ; GFX6-LABEL: name: fadd_s32_vvv_fneg_fabs_rhs155 ; GFX6: liveins: $vgpr0, $vgpr1156 ; GFX6-NEXT: {{ $}}157 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1158 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 3, [[COPY]], 0, 0, implicit $mode, implicit $exec159 ; GFX6-NEXT: S_ENDPGM 0, implicit %4160 %0:vgpr(s32) = COPY $vgpr0161 %1:vgpr(s32) = COPY $vgpr1162 %2:vgpr(s32) = G_FABS %1163 %3:vgpr(s32) = G_FNEG %2164 %4:vgpr(s32) = G_FADD %1, %3165 S_ENDPGM 0, implicit %4166 167...168 169# Need to look through reg bank copy to find source modifiers170---171 172name: fadd_s32_fneg_copy_sgpr173legalized: true174regBankSelected: true175 176body: |177 bb.0:178 liveins: $vgpr0, $sgpr0179 ; GFX6-LABEL: name: fadd_s32_fneg_copy_sgpr180 ; GFX6: liveins: $vgpr0, $sgpr0181 ; GFX6-NEXT: {{ $}}182 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0183 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0184 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]185 ; GFX6-NEXT: %4:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, [[COPY2]], 0, 0, implicit $mode, implicit $exec186 ; GFX6-NEXT: S_ENDPGM 0, implicit %4187 %0:vgpr(s32) = COPY $vgpr0188 %1:sgpr(s32) = COPY $sgpr0189 %2:sgpr(s32) = G_FNEG %1190 %3:vgpr(s32) = COPY %2191 %4:vgpr(s32) = G_FADD %0, %3192 S_ENDPGM 0, implicit %4193 194...195 196# Need to look through copy in between fneg and fabs197 198---199 200name: fadd_s32_copy_fneg_copy_fabs201legalized: true202regBankSelected: true203 204body: |205 bb.0:206 liveins: $vgpr0, $sgpr0207 ; GFX6-LABEL: name: fadd_s32_copy_fneg_copy_fabs208 ; GFX6: liveins: $vgpr0, $sgpr0209 ; GFX6-NEXT: {{ $}}210 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0211 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr0212 ; GFX6-NEXT: %6:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 3, [[COPY1]], 0, 0, implicit $mode, implicit $exec213 ; GFX6-NEXT: S_ENDPGM 0, implicit %6214 %0:vgpr(s32) = COPY $vgpr0215 %1:sgpr(s32) = COPY $sgpr0216 %2:sgpr(s32) = G_FABS %1217 %3:sgpr(s32) = COPY %2218 %4:sgpr(s32) = G_FNEG %3219 %5:sgpr(s32) = COPY %4220 %6:vgpr(s32) = G_FADD %0, %5221 S_ENDPGM 0, implicit %6222 223...224 225# The source modifier lookup searches through SGPR->VGPR copies. Make226# sure we don't violate the constant bus restriction when we look at227# the source.228 229---230 231name: fadd_s32_copy_fabs_sgpr_copy_fabs_sgpr232legalized: true233regBankSelected: true234 235body: |236 bb.0:237 liveins: $sgpr0, $sgpr1238 ; GFX6-LABEL: name: fadd_s32_copy_fabs_sgpr_copy_fabs_sgpr239 ; GFX6: liveins: $sgpr0, $sgpr1240 ; GFX6-NEXT: {{ $}}241 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0242 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1243 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]]244 ; GFX6-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]245 ; GFX6-NEXT: %6:vgpr_32 = nofpexcept V_ADD_F32_e64 2, [[COPY2]], 2, [[COPY3]], 0, 0, implicit $mode, implicit $exec246 ; GFX6-NEXT: S_ENDPGM 0, implicit %6247 %0:sgpr(s32) = COPY $sgpr0248 %1:sgpr(s32) = COPY $sgpr1249 %2:sgpr(s32) = G_FABS %0250 %3:sgpr(s32) = G_FABS %1251 %4:vgpr(s32) = COPY %2252 %5:vgpr(s32) = COPY %3253 %6:vgpr(s32) = G_FADD %4, %5254 S_ENDPGM 0, implicit %6255 256...257 258---259 260name: fadd_s32_copy_fneg_sgpr_copy_fneg_sgpr261legalized: true262regBankSelected: true263 264body: |265 bb.0:266 liveins: $sgpr0, $sgpr1267 ; GFX6-LABEL: name: fadd_s32_copy_fneg_sgpr_copy_fneg_sgpr268 ; GFX6: liveins: $sgpr0, $sgpr1269 ; GFX6-NEXT: {{ $}}270 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0271 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1272 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]]273 ; GFX6-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]274 ; GFX6-NEXT: %6:vgpr_32 = nofpexcept V_ADD_F32_e64 1, [[COPY2]], 1, [[COPY3]], 0, 0, implicit $mode, implicit $exec275 ; GFX6-NEXT: S_ENDPGM 0, implicit %6276 %0:sgpr(s32) = COPY $sgpr0277 %1:sgpr(s32) = COPY $sgpr1278 %2:sgpr(s32) = G_FNEG %0279 %3:sgpr(s32) = G_FNEG %1280 %4:vgpr(s32) = COPY %2281 %5:vgpr(s32) = COPY %3282 %6:vgpr(s32) = G_FADD %4, %5283 S_ENDPGM 0, implicit %6284 285...286 287---288 289name: fadd_s32_copy_fneg_fabs_sgpr_copy_fneg_fabs_sgpr290legalized: true291regBankSelected: true292 293body: |294 bb.0:295 liveins: $sgpr0, $sgpr1296 ; GFX6-LABEL: name: fadd_s32_copy_fneg_fabs_sgpr_copy_fneg_fabs_sgpr297 ; GFX6: liveins: $sgpr0, $sgpr1298 ; GFX6-NEXT: {{ $}}299 ; GFX6-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr0300 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr1301 ; GFX6-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]]302 ; GFX6-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY1]]303 ; GFX6-NEXT: %8:vgpr_32 = nofpexcept V_ADD_F32_e64 3, [[COPY2]], 3, [[COPY3]], 0, 0, implicit $mode, implicit $exec304 ; GFX6-NEXT: S_ENDPGM 0, implicit %8305 %0:sgpr(s32) = COPY $sgpr0306 %1:sgpr(s32) = COPY $sgpr1307 %2:sgpr(s32) = G_FABS %0308 %3:sgpr(s32) = G_FABS %1309 %4:sgpr(s32) = G_FNEG %2310 %5:sgpr(s32) = G_FNEG %3311 %6:vgpr(s32) = COPY %4312 %7:vgpr(s32) = COPY %5313 %8:vgpr(s32) = G_FADD %6, %7314 S_ENDPGM 0, implicit %8315 316...317