501 lines · plain
1# RUN: llc -mtriple=amdgcn -verify-machineinstrs -run-pass si-fold-operands %s -o - | FileCheck -check-prefix=GCN %s2---3# GCN-LABEL: name: v_max_self_clamp_not_set_f324# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec5# GCN-NEXT: %21:vgpr_32 = V_MAX_F32_e64 0, killed %20, 0, killed %20, 0, 0, implicit $mode, implicit $exec6 7name: v_max_self_clamp_not_set_f328tracksRegLiveness: true9registers:10 - { id: 0, class: sgpr_64 }11 - { id: 1, class: sreg_32_xm0 }12 - { id: 2, class: sgpr_32 }13 - { id: 3, class: vgpr_32 }14 - { id: 4, class: sreg_64_xexec }15 - { id: 5, class: sreg_64_xexec }16 - { id: 6, class: sreg_32 }17 - { id: 7, class: sreg_32 }18 - { id: 8, class: sreg_32_xm0 }19 - { id: 9, class: sreg_64 }20 - { id: 10, class: sreg_32_xm0 }21 - { id: 11, class: sreg_32_xm0 }22 - { id: 12, class: sgpr_64 }23 - { id: 13, class: sgpr_128 }24 - { id: 14, class: sreg_32_xm0 }25 - { id: 15, class: sreg_64 }26 - { id: 16, class: sgpr_128 }27 - { id: 17, class: vgpr_32 }28 - { id: 18, class: vreg_64 }29 - { id: 19, class: vgpr_32 }30 - { id: 20, class: vgpr_32 }31 - { id: 21, class: vgpr_32 }32 - { id: 22, class: vgpr_32 }33 - { id: 23, class: vreg_64 }34 - { id: 24, class: vgpr_32 }35 - { id: 25, class: vreg_64 }36 - { id: 26, class: vreg_64 }37liveins:38 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }39 - { reg: '$vgpr0', virtual-reg: '%3' }40body: |41 bb.0:42 liveins: $sgpr0_sgpr1, $vgpr043 44 %3 = COPY $vgpr045 %0 = COPY $sgpr0_sgpr146 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)47 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)48 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec49 %25 = REG_SEQUENCE %3, 1, %24, 250 %10 = S_MOV_B32 6144051 %11 = S_MOV_B32 052 %12 = REG_SEQUENCE killed %11, 1, killed %10, 253 %13 = REG_SEQUENCE killed %5, 17, %12, 1854 %14 = S_MOV_B32 255 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec56 %16 = REG_SEQUENCE killed %4, 17, %12, 1857 %18 = COPY %2658 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec59 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec60 %21 = V_MAX_F32_e64 0, killed %20, 0, killed %20, 0, 0, implicit $mode, implicit $exec61 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec62 S_ENDPGM 063 64...65---66# GCN-LABEL: name: v_clamp_omod_already_set_f3267# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec68# GCN: %21:vgpr_32 = V_MAX_F32_e64 0, killed %20, 0, killed %20, 1, 3, implicit $mode, implicit $exec69name: v_clamp_omod_already_set_f3270tracksRegLiveness: true71registers:72 - { id: 0, class: sgpr_64 }73 - { id: 1, class: sreg_32_xm0 }74 - { id: 2, class: sgpr_32 }75 - { id: 3, class: vgpr_32 }76 - { id: 4, class: sreg_64_xexec }77 - { id: 5, class: sreg_64_xexec }78 - { id: 6, class: sreg_32 }79 - { id: 7, class: sreg_32 }80 - { id: 8, class: sreg_32_xm0 }81 - { id: 9, class: sreg_64 }82 - { id: 10, class: sreg_32_xm0 }83 - { id: 11, class: sreg_32_xm0 }84 - { id: 12, class: sgpr_64 }85 - { id: 13, class: sgpr_128 }86 - { id: 14, class: sreg_32_xm0 }87 - { id: 15, class: sreg_64 }88 - { id: 16, class: sgpr_128 }89 - { id: 17, class: vgpr_32 }90 - { id: 18, class: vreg_64 }91 - { id: 19, class: vgpr_32 }92 - { id: 20, class: vgpr_32 }93 - { id: 21, class: vgpr_32 }94 - { id: 22, class: vgpr_32 }95 - { id: 23, class: vreg_64 }96 - { id: 24, class: vgpr_32 }97 - { id: 25, class: vreg_64 }98 - { id: 26, class: vreg_64 }99liveins:100 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }101 - { reg: '$vgpr0', virtual-reg: '%3' }102body: |103 bb.0:104 liveins: $sgpr0_sgpr1, $vgpr0105 106 %3 = COPY $vgpr0107 %0 = COPY $sgpr0_sgpr1108 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)109 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)110 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec111 %25 = REG_SEQUENCE %3, 1, %24, 2112 %10 = S_MOV_B32 61440113 %11 = S_MOV_B32 0114 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2115 %13 = REG_SEQUENCE killed %5, 17, %12, 18116 %14 = S_MOV_B32 2117 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec118 %16 = REG_SEQUENCE killed %4, 17, %12, 18119 %18 = COPY %26120 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec121 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec122 %21 = V_MAX_F32_e64 0, killed %20, 0, killed %20, 1, 3, implicit $mode, implicit $exec123 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec124 S_ENDPGM 0125...126---127# Don't fold a mul that looks like an omod if itself has omod set128 129# GCN-LABEL: name: v_omod_mul_omod_already_set_f32130# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec131# GCN-NEXT: %21:vgpr_32 = V_MUL_F32_e64 0, killed %20, 0, 1056964608, 0, 3, implicit $mode, implicit $exec132name: v_omod_mul_omod_already_set_f32133tracksRegLiveness: true134registers:135 - { id: 0, class: sgpr_64 }136 - { id: 1, class: sreg_32_xm0 }137 - { id: 2, class: sgpr_32 }138 - { id: 3, class: vgpr_32 }139 - { id: 4, class: sreg_64_xexec }140 - { id: 5, class: sreg_64_xexec }141 - { id: 6, class: sreg_32 }142 - { id: 7, class: sreg_32 }143 - { id: 8, class: sreg_32_xm0 }144 - { id: 9, class: sreg_64 }145 - { id: 10, class: sreg_32_xm0 }146 - { id: 11, class: sreg_32_xm0 }147 - { id: 12, class: sgpr_64 }148 - { id: 13, class: sgpr_128 }149 - { id: 14, class: sreg_32_xm0 }150 - { id: 15, class: sreg_64 }151 - { id: 16, class: sgpr_128 }152 - { id: 17, class: vgpr_32 }153 - { id: 18, class: vreg_64 }154 - { id: 19, class: vgpr_32 }155 - { id: 20, class: vgpr_32 }156 - { id: 21, class: vgpr_32 }157 - { id: 22, class: vgpr_32 }158 - { id: 23, class: vreg_64 }159 - { id: 24, class: vgpr_32 }160 - { id: 25, class: vreg_64 }161 - { id: 26, class: vreg_64 }162liveins:163 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }164 - { reg: '$vgpr0', virtual-reg: '%3' }165body: |166 bb.0:167 liveins: $sgpr0_sgpr1, $vgpr0168 169 %3 = COPY $vgpr0170 %0 = COPY $sgpr0_sgpr1171 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)172 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)173 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec174 %25 = REG_SEQUENCE %3, 1, %24, 2175 %10 = S_MOV_B32 61440176 %11 = S_MOV_B32 0177 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2178 %13 = REG_SEQUENCE killed %5, 17, %12, 18179 %14 = S_MOV_B32 2180 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec181 %16 = REG_SEQUENCE killed %4, 17, %12, 18182 %18 = COPY %26183 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec184 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec185 %21 = V_MUL_F32_e64 0, killed %20, 0, 1056964608, 0, 3, implicit $mode, implicit $exec186 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec187 S_ENDPGM 0188 189...190---191# Don't fold a mul that looks like an omod if itself has clamp set192# This might be OK, but would require folding the clamp at the same time.193# GCN-LABEL: name: v_omod_mul_clamp_already_set_f32194# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec195# GCN-NEXT: %21:vgpr_32 = V_MUL_F32_e64 0, killed %20, 0, 1056964608, 1, 0, implicit $mode, implicit $exec196 197name: v_omod_mul_clamp_already_set_f32198tracksRegLiveness: true199registers:200 - { id: 0, class: sgpr_64 }201 - { id: 1, class: sreg_32_xm0 }202 - { id: 2, class: sgpr_32 }203 - { id: 3, class: vgpr_32 }204 - { id: 4, class: sreg_64_xexec }205 - { id: 5, class: sreg_64_xexec }206 - { id: 6, class: sreg_32 }207 - { id: 7, class: sreg_32 }208 - { id: 8, class: sreg_32_xm0 }209 - { id: 9, class: sreg_64 }210 - { id: 10, class: sreg_32_xm0 }211 - { id: 11, class: sreg_32_xm0 }212 - { id: 12, class: sgpr_64 }213 - { id: 13, class: sgpr_128 }214 - { id: 14, class: sreg_32_xm0 }215 - { id: 15, class: sreg_64 }216 - { id: 16, class: sgpr_128 }217 - { id: 17, class: vgpr_32 }218 - { id: 18, class: vreg_64 }219 - { id: 19, class: vgpr_32 }220 - { id: 20, class: vgpr_32 }221 - { id: 21, class: vgpr_32 }222 - { id: 22, class: vgpr_32 }223 - { id: 23, class: vreg_64 }224 - { id: 24, class: vgpr_32 }225 - { id: 25, class: vreg_64 }226 - { id: 26, class: vreg_64 }227liveins:228 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }229 - { reg: '$vgpr0', virtual-reg: '%3' }230body: |231 bb.0:232 liveins: $sgpr0_sgpr1, $vgpr0233 234 %3 = COPY $vgpr0235 %0 = COPY $sgpr0_sgpr1236 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)237 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)238 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec239 %25 = REG_SEQUENCE %3, 1, %24, 2240 %10 = S_MOV_B32 61440241 %11 = S_MOV_B32 0242 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2243 %13 = REG_SEQUENCE killed %5, 17, %12, 18244 %14 = S_MOV_B32 2245 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec246 %16 = REG_SEQUENCE killed %4, 17, %12, 18247 %18 = COPY %26248 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec249 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec250 %21 = V_MUL_F32_e64 0, killed %20, 0, 1056964608, 1, 0, implicit $mode, implicit $exec251 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec252 S_ENDPGM 0253 254...255 256 257 258 259 260 261 262 263 264 265 266 267 268---269# Don't fold a mul that looks like an omod if itself has omod set270 271# GCN-LABEL: name: v_omod_add_omod_already_set_f32272# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec273# GCN-NEXT: %21:vgpr_32 = V_ADD_F32_e64 0, killed %20, 0, killed %20, 0, 3, implicit $mode, implicit $exec274name: v_omod_add_omod_already_set_f32275tracksRegLiveness: true276registers:277 - { id: 0, class: sgpr_64 }278 - { id: 1, class: sreg_32_xm0 }279 - { id: 2, class: sgpr_32 }280 - { id: 3, class: vgpr_32 }281 - { id: 4, class: sreg_64_xexec }282 - { id: 5, class: sreg_64_xexec }283 - { id: 6, class: sreg_32 }284 - { id: 7, class: sreg_32 }285 - { id: 8, class: sreg_32_xm0 }286 - { id: 9, class: sreg_64 }287 - { id: 10, class: sreg_32_xm0 }288 - { id: 11, class: sreg_32_xm0 }289 - { id: 12, class: sgpr_64 }290 - { id: 13, class: sgpr_128 }291 - { id: 14, class: sreg_32_xm0 }292 - { id: 15, class: sreg_64 }293 - { id: 16, class: sgpr_128 }294 - { id: 17, class: vgpr_32 }295 - { id: 18, class: vreg_64 }296 - { id: 19, class: vgpr_32 }297 - { id: 20, class: vgpr_32 }298 - { id: 21, class: vgpr_32 }299 - { id: 22, class: vgpr_32 }300 - { id: 23, class: vreg_64 }301 - { id: 24, class: vgpr_32 }302 - { id: 25, class: vreg_64 }303 - { id: 26, class: vreg_64 }304liveins:305 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }306 - { reg: '$vgpr0', virtual-reg: '%3' }307body: |308 bb.0:309 liveins: $sgpr0_sgpr1, $vgpr0310 311 %3 = COPY $vgpr0312 %0 = COPY $sgpr0_sgpr1313 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)314 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)315 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec316 %25 = REG_SEQUENCE %3, 1, %24, 2317 %10 = S_MOV_B32 61440318 %11 = S_MOV_B32 0319 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2320 %13 = REG_SEQUENCE killed %5, 17, %12, 18321 %14 = S_MOV_B32 2322 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec323 %16 = REG_SEQUENCE killed %4, 17, %12, 18324 %18 = COPY %26325 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec326 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec327 %21 = V_ADD_F32_e64 0, killed %20, 0, killed %20, 0, 3, implicit $mode, implicit $exec328 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec329 S_ENDPGM 0330 331...332---333# Don't fold a mul that looks like an omod if itself has clamp set334# This might be OK, but would require folding the clamp at the same time.335# GCN-LABEL: name: v_omod_add_clamp_already_set_f32336# GCN: %20:vgpr_32 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec337# GCN-NEXT: %21:vgpr_32 = V_ADD_F32_e64 0, killed %20, 0, killed %20, 1, 0, implicit $mode, implicit $exec338 339name: v_omod_add_clamp_already_set_f32340tracksRegLiveness: true341registers:342 - { id: 0, class: sgpr_64 }343 - { id: 1, class: sreg_32_xm0 }344 - { id: 2, class: sgpr_32 }345 - { id: 3, class: vgpr_32 }346 - { id: 4, class: sreg_64_xexec }347 - { id: 5, class: sreg_64_xexec }348 - { id: 6, class: sreg_32 }349 - { id: 7, class: sreg_32 }350 - { id: 8, class: sreg_32_xm0 }351 - { id: 9, class: sreg_64 }352 - { id: 10, class: sreg_32_xm0 }353 - { id: 11, class: sreg_32_xm0 }354 - { id: 12, class: sgpr_64 }355 - { id: 13, class: sgpr_128 }356 - { id: 14, class: sreg_32_xm0 }357 - { id: 15, class: sreg_64 }358 - { id: 16, class: sgpr_128 }359 - { id: 17, class: vgpr_32 }360 - { id: 18, class: vreg_64 }361 - { id: 19, class: vgpr_32 }362 - { id: 20, class: vgpr_32 }363 - { id: 21, class: vgpr_32 }364 - { id: 22, class: vgpr_32 }365 - { id: 23, class: vreg_64 }366 - { id: 24, class: vgpr_32 }367 - { id: 25, class: vreg_64 }368 - { id: 26, class: vreg_64 }369liveins:370 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }371 - { reg: '$vgpr0', virtual-reg: '%3' }372body: |373 bb.0:374 liveins: $sgpr0_sgpr1, $vgpr0375 376 %3 = COPY $vgpr0377 %0 = COPY $sgpr0_sgpr1378 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)379 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0 :: (non-temporal dereferenceable invariant load (s64) from `ptr addrspace(4) poison`)380 %24 = V_ASHRREV_I32_e32 31, %3, implicit $exec381 %25 = REG_SEQUENCE %3, 1, %24, 2382 %10 = S_MOV_B32 61440383 %11 = S_MOV_B32 0384 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2385 %13 = REG_SEQUENCE killed %5, 17, %12, 18386 %14 = S_MOV_B32 2387 %26 = V_LSHL_B64_e64 killed %25, 2, implicit $exec388 %16 = REG_SEQUENCE killed %4, 17, %12, 18389 %18 = COPY %26390 %17 = BUFFER_LOAD_DWORD_ADDR64 %26, killed %13, 0, 0, 0, 0, implicit $exec391 %20 = V_ADD_F32_e64 0, killed %17, 0, 1065353216, 0, 0, implicit $mode, implicit $exec392 %21 = V_ADD_F32_e64 0, killed %20, 0, killed %20, 1, 0, implicit $mode, implicit $exec393 BUFFER_STORE_DWORD_ADDR64 killed %21, %26, killed %16, 0, 0, 0, 0, implicit $exec394 S_ENDPGM 0395 396...397---398 399# Pass used to crash with immediate second operand of max400name: v_max_reg_imm_f32401tracksRegLiveness: true402registers:403 - { id: 0, class: vgpr_32 }404 - { id: 1, class: vgpr_32 }405body: |406 bb.0:407 liveins: $vgpr0408 409 %0 = COPY $vgpr0410 %1 = V_MAX_F32_e64 0, killed %0, 0, 1056964608, 1, 0, implicit $mode, implicit $exec411 412...413 414---415# GCN-LABEL: name: clamp_missing_nofpexcept_0416# GCN: %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec417# GCN-NEXT: %3:vgpr_32 = V_MAX_F32_e64 0, killed %2, 0, killed %2, 1, 0, implicit $mode, implicit $exec418name: clamp_missing_nofpexcept_0419tracksRegLiveness: true420machineFunctionInfo:421 mode:422 ieee: false423 fp32-input-denormals: false424 fp32-output-denormals: false425 426body: |427 bb.0:428 liveins: $vgpr0, $vgpr1429 430 %0:vgpr_32 = COPY $vgpr0431 %1:vgpr_32 = COPY $vgpr1432 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec433 %3:vgpr_32 = V_MAX_F32_e64 0, killed %2, 0, killed %2, 1, 0, implicit $mode, implicit $exec434...435 436---437# GCN-LABEL: name: clamp_missing_nofpexcept_1438# GCN: %2:vgpr_32 = V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec439# GCN-NEXT: %3:vgpr_32 = nofpexcept V_MAX_F32_e64 0, killed %2, 0, killed %2, 1, 0, implicit $mode, implicit $exec440name: clamp_missing_nofpexcept_1441tracksRegLiveness: true442machineFunctionInfo:443 mode:444 ieee: false445 fp32-input-denormals: false446 fp32-output-denormals: false447 448body: |449 bb.0:450 liveins: $vgpr0, $vgpr1451 452 %0:vgpr_32 = COPY $vgpr0453 %1:vgpr_32 = COPY $vgpr1454 %2:vgpr_32 = V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec455 %3:vgpr_32 = nofpexcept V_MAX_F32_e64 0, killed %2, 0, killed %2, 1, 0, implicit $mode, implicit $exec456...457 458---459# GCN-LABEL: name: omod_missing_nofpexcept_0460# GCN: %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec461# GCN-NEXT: %3:vgpr_32 = nsz V_MUL_F32_e64 0, killed %2, 0, 1056964608, 0, 0, implicit $mode, implicit $exec462name: omod_missing_nofpexcept_0463tracksRegLiveness: true464machineFunctionInfo:465 mode:466 ieee: false467 fp32-input-denormals: false468 fp32-output-denormals: false469body: |470 bb.0:471 liveins: $vgpr0, $vgpr1472 473 %0:vgpr_32 = COPY $vgpr0474 %1:vgpr_32 = COPY $vgpr1475 %2:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec476 %3:vgpr_32 = nsz V_MUL_F32_e64 0, killed %2, 0, 1056964608, 0, 0, implicit $mode, implicit $exec477 478...479 480---481# GCN-LABEL: name: omod_missing_nofpexcept_1482# GCN: %2:vgpr_32 = V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec483# GCN-NEXT: %3:vgpr_32 = nsz nofpexcept V_MUL_F32_e64 0, killed %2, 0, 1056964608, 0, 0, implicit $mode, implicit $exec484name: omod_missing_nofpexcept_1485tracksRegLiveness: true486machineFunctionInfo:487 mode:488 ieee: false489 fp32-input-denormals: false490 fp32-output-denormals: false491body: |492 bb.0:493 liveins: $vgpr0, $vgpr1494 495 %0:vgpr_32 = COPY $vgpr0496 %1:vgpr_32 = COPY $vgpr1497 %2:vgpr_32 = V_ADD_F32_e64 0, %0, 0, %1, 0, 0, implicit $mode, implicit $exec498 %3:vgpr_32 = nsz nofpexcept V_MUL_F32_e64 0, killed %2, 0, 1056964608, 0, 0, implicit $mode, implicit $exec499 500...501