brintos

brintos / llvm-project-archived public Read only

0
0
Text · 180.4 KiB · 8f9fc67 Raw
2869 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -run-pass=amdgpu-prelegalizer-combiner %s -o - | FileCheck -check-prefix=GFX9 %s3# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -run-pass=amdgpu-prelegalizer-combiner --denormal-fp-math=preserve-sign %s -o - | FileCheck -check-prefix=GFX9-DENORM %s4# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-prelegalizer-combiner %s -o - | FileCheck -check-prefix=GFX10 %s5# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-prelegalizer-combiner --denormal-fp-math=preserve-sign %s -o - | FileCheck -check-prefix=GFX10-DENORM %s6 7---8name:            test_f32_add_mul9body:             |10  bb.1.entry:11    liveins: $vgpr0, $vgpr1, $vgpr212 13    ; GFX9-LABEL: name: test_f32_add_mul14    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr215    ; GFX9-NEXT: {{  $}}16    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr017    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr118    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr219    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]20    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[FMUL]], [[COPY2]]21    ; GFX9-NEXT: $vgpr0 = COPY [[FADD]](s32)22    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr023    ;24    ; GFX9-DENORM-LABEL: name: test_f32_add_mul25    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr226    ; GFX9-DENORM-NEXT: {{  $}}27    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr028    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr129    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr230    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]31    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[FMUL]], [[COPY2]]32    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)33    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr034    ;35    ; GFX10-LABEL: name: test_f32_add_mul36    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr237    ; GFX10-NEXT: {{  $}}38    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr039    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr140    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr241    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]42    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[FMUL]], [[COPY2]]43    ; GFX10-NEXT: $vgpr0 = COPY [[FADD]](s32)44    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr045    ;46    ; GFX10-DENORM-LABEL: name: test_f32_add_mul47    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr248    ; GFX10-DENORM-NEXT: {{  $}}49    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr050    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr151    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr252    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]53    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[FMUL]], [[COPY2]]54    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)55    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr056    %0:_(s32) = COPY $vgpr057    %1:_(s32) = COPY $vgpr158    %2:_(s32) = COPY $vgpr259    %4:_(s32) = reassoc G_FMUL %0, %160    %5:_(s32) = reassoc G_FADD %4, %261    $vgpr0 = COPY %5(s32)62    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr063...64 65---66name:            test_f32_add_mul_contract67body:             |68  bb.1.entry:69    liveins: $vgpr0, $vgpr1, $vgpr270 71    ; GFX9-LABEL: name: test_f32_add_mul_contract72    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr273    ; GFX9-NEXT: {{  $}}74    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr075    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr176    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr277    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]78    ; GFX9-NEXT: $vgpr0 = COPY [[FMA]](s32)79    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr080    ;81    ; GFX9-DENORM-LABEL: name: test_f32_add_mul_contract82    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr283    ; GFX9-DENORM-NEXT: {{  $}}84    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr085    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr186    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr287    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]88    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)89    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr090    ;91    ; GFX10-LABEL: name: test_f32_add_mul_contract92    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr293    ; GFX10-NEXT: {{  $}}94    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr095    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr196    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr297    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]98    ; GFX10-NEXT: $vgpr0 = COPY [[FMA]](s32)99    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0100    ;101    ; GFX10-DENORM-LABEL: name: test_f32_add_mul_contract102    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2103    ; GFX10-DENORM-NEXT: {{  $}}104    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0105    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1106    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2107    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]108    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)109    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0110    %0:_(s32) = COPY $vgpr0111    %1:_(s32) = COPY $vgpr1112    %2:_(s32) = COPY $vgpr2113    %4:_(s32) = reassoc contract G_FMUL %0, %1114    %5:_(s32) = reassoc contract G_FADD %4, %2115    $vgpr0 = COPY %5(s32)116    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0117...118 119---120name:            test_f32_add_mul_rhs121body:             |122  bb.1.entry:123    liveins: $vgpr0, $vgpr1, $vgpr2124 125    ; GFX9-LABEL: name: test_f32_add_mul_rhs126    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2127    ; GFX9-NEXT: {{  $}}128    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0129    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1130    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2131    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]132    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[COPY2]], [[FMUL]]133    ; GFX9-NEXT: $vgpr0 = COPY [[FADD]](s32)134    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0135    ;136    ; GFX9-DENORM-LABEL: name: test_f32_add_mul_rhs137    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2138    ; GFX9-DENORM-NEXT: {{  $}}139    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0140    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1141    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2142    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]143    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[COPY2]], [[FMUL]]144    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)145    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0146    ;147    ; GFX10-LABEL: name: test_f32_add_mul_rhs148    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2149    ; GFX10-NEXT: {{  $}}150    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0151    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1152    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2153    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]154    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[COPY2]], [[FMUL]]155    ; GFX10-NEXT: $vgpr0 = COPY [[FADD]](s32)156    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0157    ;158    ; GFX10-DENORM-LABEL: name: test_f32_add_mul_rhs159    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2160    ; GFX10-DENORM-NEXT: {{  $}}161    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0162    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1163    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2164    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = reassoc G_FMUL [[COPY]], [[COPY1]]165    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = reassoc G_FADD [[COPY2]], [[FMUL]]166    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)167    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0168    %0:_(s32) = COPY $vgpr0169    %1:_(s32) = COPY $vgpr1170    %2:_(s32) = COPY $vgpr2171    %4:_(s32) = reassoc G_FMUL %0, %1172    %5:_(s32) = reassoc G_FADD %2, %4173    $vgpr0 = COPY %5(s32)174    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0175...176 177---178name:            test_f32_add_mul_rhs_contract179body:             |180  bb.1.entry:181    liveins: $vgpr0, $vgpr1, $vgpr2182 183    ; GFX9-LABEL: name: test_f32_add_mul_rhs_contract184    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2185    ; GFX9-NEXT: {{  $}}186    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0187    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1188    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2189    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]190    ; GFX9-NEXT: $vgpr0 = COPY [[FMA]](s32)191    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0192    ;193    ; GFX9-DENORM-LABEL: name: test_f32_add_mul_rhs_contract194    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2195    ; GFX9-DENORM-NEXT: {{  $}}196    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0197    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1198    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2199    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]200    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)201    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0202    ;203    ; GFX10-LABEL: name: test_f32_add_mul_rhs_contract204    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2205    ; GFX10-NEXT: {{  $}}206    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0207    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1208    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2209    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]210    ; GFX10-NEXT: $vgpr0 = COPY [[FMA]](s32)211    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0212    ;213    ; GFX10-DENORM-LABEL: name: test_f32_add_mul_rhs_contract214    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2215    ; GFX10-DENORM-NEXT: {{  $}}216    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0217    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1218    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2219    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]220    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)221    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0222    %0:_(s32) = COPY $vgpr0223    %1:_(s32) = COPY $vgpr1224    %2:_(s32) = COPY $vgpr2225    %4:_(s32) = reassoc contract G_FMUL %0, %1226    %5:_(s32) = reassoc contract G_FADD %2, %4227    $vgpr0 = COPY %5(s32)228    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0229...230 231---232name:            test_half_add_mul233body:             |234  bb.1.entry:235    liveins: $vgpr0, $vgpr1, $vgpr2236 237    ; GFX9-LABEL: name: test_half_add_mul238    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2239    ; GFX9-NEXT: {{  $}}240    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0241    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)242    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1243    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)244    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2245    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)246    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]247    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[FMUL]], [[TRUNC2]]248    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)249    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)250    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0251    ;252    ; GFX9-DENORM-LABEL: name: test_half_add_mul253    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2254    ; GFX9-DENORM-NEXT: {{  $}}255    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0256    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)257    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1258    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)259    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2260    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)261    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]262    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[FMUL]], [[TRUNC2]]263    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)264    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)265    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0266    ;267    ; GFX10-LABEL: name: test_half_add_mul268    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2269    ; GFX10-NEXT: {{  $}}270    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0271    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)272    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1273    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)274    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2275    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)276    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]277    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[FMUL]], [[TRUNC2]]278    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)279    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)280    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0281    ;282    ; GFX10-DENORM-LABEL: name: test_half_add_mul283    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2284    ; GFX10-DENORM-NEXT: {{  $}}285    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0286    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)287    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1288    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)289    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2290    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)291    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]292    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[FMUL]], [[TRUNC2]]293    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)294    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)295    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0296    %4:_(s32) = COPY $vgpr0297    %0:_(s16) = G_TRUNC %4(s32)298    %5:_(s32) = COPY $vgpr1299    %1:_(s16) = G_TRUNC %5(s32)300    %6:_(s32) = COPY $vgpr2301    %2:_(s16) = G_TRUNC %6(s32)302    %7:_(s16) = reassoc G_FMUL %0, %1303    %8:_(s16) = reassoc G_FADD %7, %2304    %10:_(s32) = G_ANYEXT %8(s16)305    $vgpr0 = COPY %10(s32)306    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0307...308 309---310name:            test_half_add_mul_contract311body:             |312  bb.1.entry:313    liveins: $vgpr0, $vgpr1, $vgpr2314 315    ; GFX9-LABEL: name: test_half_add_mul_contract316    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2317    ; GFX9-NEXT: {{  $}}318    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0319    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)320    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1321    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)322    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2323    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)324    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]325    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)326    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)327    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0328    ;329    ; GFX9-DENORM-LABEL: name: test_half_add_mul_contract330    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2331    ; GFX9-DENORM-NEXT: {{  $}}332    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0333    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)334    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1335    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)336    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2337    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)338    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]339    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)340    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)341    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0342    ;343    ; GFX10-LABEL: name: test_half_add_mul_contract344    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2345    ; GFX10-NEXT: {{  $}}346    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0347    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)348    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1349    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)350    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2351    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)352    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]353    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)354    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)355    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0356    ;357    ; GFX10-DENORM-LABEL: name: test_half_add_mul_contract358    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2359    ; GFX10-DENORM-NEXT: {{  $}}360    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0361    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)362    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1363    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)364    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2365    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)366    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]367    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)368    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)369    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0370    %4:_(s32) = COPY $vgpr0371    %0:_(s16) = G_TRUNC %4(s32)372    %5:_(s32) = COPY $vgpr1373    %1:_(s16) = G_TRUNC %5(s32)374    %6:_(s32) = COPY $vgpr2375    %2:_(s16) = G_TRUNC %6(s32)376    %7:_(s16) = reassoc contract G_FMUL %0, %1377    %8:_(s16) = reassoc contract G_FADD %7, %2378    %10:_(s32) = G_ANYEXT %8(s16)379    $vgpr0 = COPY %10(s32)380    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0381...382 383 384---385name:            test_half_add_mul_rhs386body:             |387  bb.1.entry:388    liveins: $vgpr0, $vgpr1, $vgpr2389 390    ; GFX9-LABEL: name: test_half_add_mul_rhs391    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2392    ; GFX9-NEXT: {{  $}}393    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0394    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)395    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1396    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)397    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2398    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)399    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]400    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]401    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)402    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)403    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0404    ;405    ; GFX9-DENORM-LABEL: name: test_half_add_mul_rhs406    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2407    ; GFX9-DENORM-NEXT: {{  $}}408    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0409    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)410    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1411    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)412    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2413    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)414    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]415    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]416    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)417    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)418    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0419    ;420    ; GFX10-LABEL: name: test_half_add_mul_rhs421    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2422    ; GFX10-NEXT: {{  $}}423    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0424    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)425    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1426    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)427    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2428    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)429    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]430    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]431    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)432    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)433    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0434    ;435    ; GFX10-DENORM-LABEL: name: test_half_add_mul_rhs436    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2437    ; GFX10-DENORM-NEXT: {{  $}}438    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0439    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)440    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1441    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)442    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2443    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)444    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]445    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]446    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)447    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)448    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0449    %4:_(s32) = COPY $vgpr0450    %0:_(s16) = G_TRUNC %4(s32)451    %5:_(s32) = COPY $vgpr1452    %1:_(s16) = G_TRUNC %5(s32)453    %6:_(s32) = COPY $vgpr2454    %2:_(s16) = G_TRUNC %6(s32)455    %7:_(s16) = reassoc G_FMUL %0, %1456    %8:_(s16) = reassoc G_FADD %2, %7457    %10:_(s32) = G_ANYEXT %8(s16)458    $vgpr0 = COPY %10(s32)459    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0460...461 462---463name:            test_half_add_mul_rhs_contract464body:             |465  bb.1.entry:466    liveins: $vgpr0, $vgpr1, $vgpr2467 468    ; GFX9-LABEL: name: test_half_add_mul_rhs_contract469    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2470    ; GFX9-NEXT: {{  $}}471    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0472    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)473    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1474    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)475    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2476    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)477    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]478    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]479    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)480    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)481    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0482    ;483    ; GFX9-DENORM-LABEL: name: test_half_add_mul_rhs_contract484    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2485    ; GFX9-DENORM-NEXT: {{  $}}486    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0487    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)488    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1489    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)490    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2491    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)492    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]493    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]494    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)495    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)496    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0497    ;498    ; GFX10-LABEL: name: test_half_add_mul_rhs_contract499    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2500    ; GFX10-NEXT: {{  $}}501    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0502    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)503    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1504    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)505    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2506    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)507    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]508    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]509    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)510    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)511    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0512    ;513    ; GFX10-DENORM-LABEL: name: test_half_add_mul_rhs_contract514    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2515    ; GFX10-DENORM-NEXT: {{  $}}516    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0517    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)518    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1519    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)520    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2521    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)522    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = reassoc G_FMUL [[TRUNC]], [[TRUNC1]]523    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = reassoc G_FADD [[TRUNC2]], [[FMUL]]524    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)525    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)526    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0527    %4:_(s32) = COPY $vgpr0528    %0:_(s16) = G_TRUNC %4(s32)529    %5:_(s32) = COPY $vgpr1530    %1:_(s16) = G_TRUNC %5(s32)531    %6:_(s32) = COPY $vgpr2532    %2:_(s16) = G_TRUNC %6(s32)533    %7:_(s16) = reassoc G_FMUL %0, %1534    %8:_(s16) = reassoc G_FADD %2, %7535    %10:_(s32) = G_ANYEXT %8(s16)536    $vgpr0 = COPY %10(s32)537    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0538...539 540---541name:            test_double_add_mul542body:             |543  bb.1.entry:544    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5545 546    ; GFX9-LABEL: name: test_double_add_mul547    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5548    ; GFX9-NEXT: {{  $}}549    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0550    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1551    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)552    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2553    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3554    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)555    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4556    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5557    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)558    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]559    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[FMUL]], [[MV2]]560    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)561    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)562    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)563    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1564    ;565    ; GFX9-DENORM-LABEL: name: test_double_add_mul566    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5567    ; GFX9-DENORM-NEXT: {{  $}}568    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0569    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1570    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)571    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2572    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3573    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)574    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4575    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5576    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)577    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]578    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[FMUL]], [[MV2]]579    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)580    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)581    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)582    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1583    ;584    ; GFX10-LABEL: name: test_double_add_mul585    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5586    ; GFX10-NEXT: {{  $}}587    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0588    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1589    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)590    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2591    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3592    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)593    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4594    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5595    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)596    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]597    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[FMUL]], [[MV2]]598    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)599    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)600    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)601    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1602    ;603    ; GFX10-DENORM-LABEL: name: test_double_add_mul604    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5605    ; GFX10-DENORM-NEXT: {{  $}}606    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0607    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1608    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)609    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2610    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3611    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)612    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4613    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5614    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)615    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]616    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[FMUL]], [[MV2]]617    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)618    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)619    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)620    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1621    %4:_(s32) = COPY $vgpr0622    %5:_(s32) = COPY $vgpr1623    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)624    %6:_(s32) = COPY $vgpr2625    %7:_(s32) = COPY $vgpr3626    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)627    %8:_(s32) = COPY $vgpr4628    %9:_(s32) = COPY $vgpr5629    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)630    %10:_(s64) = reassoc G_FMUL %0, %1631    %11:_(s64) = reassoc G_FADD %10, %2632    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)633    $vgpr0 = COPY %13(s32)634    $vgpr1 = COPY %14(s32)635    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1636...637 638---639name:            test_double_add_mul_contract640body:             |641  bb.1.entry:642    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5643 644    ; GFX9-LABEL: name: test_double_add_mul_contract645    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5646    ; GFX9-NEXT: {{  $}}647    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0648    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1649    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)650    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2651    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3652    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)653    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4654    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5655    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)656    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]657    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)658    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)659    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)660    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1661    ;662    ; GFX9-DENORM-LABEL: name: test_double_add_mul_contract663    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5664    ; GFX9-DENORM-NEXT: {{  $}}665    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0666    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1667    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)668    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2669    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3670    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)671    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4672    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5673    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)674    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]675    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)676    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)677    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)678    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1679    ;680    ; GFX10-LABEL: name: test_double_add_mul_contract681    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5682    ; GFX10-NEXT: {{  $}}683    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0684    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1685    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)686    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2687    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3688    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)689    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4690    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5691    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)692    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]693    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)694    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)695    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)696    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1697    ;698    ; GFX10-DENORM-LABEL: name: test_double_add_mul_contract699    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5700    ; GFX10-DENORM-NEXT: {{  $}}701    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0702    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1703    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)704    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2705    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3706    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)707    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4708    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5709    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)710    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]711    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)712    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)713    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)714    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1715    %4:_(s32) = COPY $vgpr0716    %5:_(s32) = COPY $vgpr1717    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)718    %6:_(s32) = COPY $vgpr2719    %7:_(s32) = COPY $vgpr3720    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)721    %8:_(s32) = COPY $vgpr4722    %9:_(s32) = COPY $vgpr5723    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)724    %10:_(s64) = reassoc contract G_FMUL %0, %1725    %11:_(s64) = reassoc contract G_FADD %10, %2726    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)727    $vgpr0 = COPY %13(s32)728    $vgpr1 = COPY %14(s32)729    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1730...731 732---733name:            test_double_add_mul_rhs734body:             |735  bb.1.entry:736    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5737 738    ; GFX9-LABEL: name: test_double_add_mul_rhs739    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5740    ; GFX9-NEXT: {{  $}}741    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0742    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1743    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)744    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2745    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3746    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)747    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4748    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5749    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)750    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]751    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[MV2]], [[FMUL]]752    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)753    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)754    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)755    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1756    ;757    ; GFX9-DENORM-LABEL: name: test_double_add_mul_rhs758    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5759    ; GFX9-DENORM-NEXT: {{  $}}760    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0761    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1762    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)763    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2764    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3765    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)766    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4767    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5768    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)769    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]770    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[MV2]], [[FMUL]]771    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)772    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)773    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)774    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1775    ;776    ; GFX10-LABEL: name: test_double_add_mul_rhs777    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5778    ; GFX10-NEXT: {{  $}}779    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0780    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1781    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)782    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2783    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3784    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)785    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4786    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5787    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)788    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]789    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[MV2]], [[FMUL]]790    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)791    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)792    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)793    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1794    ;795    ; GFX10-DENORM-LABEL: name: test_double_add_mul_rhs796    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5797    ; GFX10-DENORM-NEXT: {{  $}}798    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0799    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1800    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)801    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2802    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3803    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)804    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4805    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5806    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)807    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = reassoc G_FMUL [[MV]], [[MV1]]808    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = reassoc G_FADD [[MV2]], [[FMUL]]809    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)810    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)811    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)812    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1813    %4:_(s32) = COPY $vgpr0814    %5:_(s32) = COPY $vgpr1815    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)816    %6:_(s32) = COPY $vgpr2817    %7:_(s32) = COPY $vgpr3818    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)819    %8:_(s32) = COPY $vgpr4820    %9:_(s32) = COPY $vgpr5821    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)822    %10:_(s64) = reassoc G_FMUL %0, %1823    %11:_(s64) = reassoc G_FADD %2, %10824    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)825    $vgpr0 = COPY %13(s32)826    $vgpr1 = COPY %14(s32)827    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1828...829 830---831name:            test_double_add_mul_rhs_contract832body:             |833  bb.1.entry:834    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5835 836    ; GFX9-LABEL: name: test_double_add_mul_rhs_contract837    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5838    ; GFX9-NEXT: {{  $}}839    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0840    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1841    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)842    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2843    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3844    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)845    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4846    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5847    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)848    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]849    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)850    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)851    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)852    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1853    ;854    ; GFX9-DENORM-LABEL: name: test_double_add_mul_rhs_contract855    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5856    ; GFX9-DENORM-NEXT: {{  $}}857    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0858    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1859    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)860    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2861    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3862    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)863    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4864    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5865    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)866    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]867    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)868    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)869    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)870    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1871    ;872    ; GFX10-LABEL: name: test_double_add_mul_rhs_contract873    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5874    ; GFX10-NEXT: {{  $}}875    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0876    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1877    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)878    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2879    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3880    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)881    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4882    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5883    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)884    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]885    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)886    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)887    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)888    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1889    ;890    ; GFX10-DENORM-LABEL: name: test_double_add_mul_rhs_contract891    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5892    ; GFX10-DENORM-NEXT: {{  $}}893    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0894    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1895    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)896    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2897    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3898    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)899    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4900    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5901    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)902    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]903    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)904    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)905    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)906    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1907    %4:_(s32) = COPY $vgpr0908    %5:_(s32) = COPY $vgpr1909    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)910    %6:_(s32) = COPY $vgpr2911    %7:_(s32) = COPY $vgpr3912    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)913    %8:_(s32) = COPY $vgpr4914    %9:_(s32) = COPY $vgpr5915    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)916    %10:_(s64) = reassoc contract G_FMUL %0, %1917    %11:_(s64) = reassoc contract G_FADD %2, %10918    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)919    $vgpr0 = COPY %13(s32)920    $vgpr1 = COPY %14(s32)921    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1922...923 924---925name:            test_4xfloat_add_mul926body:             |927  bb.1.entry:928    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11929 930    ; GFX9-LABEL: name: test_4xfloat_add_mul931    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11932    ; GFX9-NEXT: {{  $}}933    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0934    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1935    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2936    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3937    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)938    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4939    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5940    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6941    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7942    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)943    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8944    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9945    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10946    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11947    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)948    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]949    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]950    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s32>)951    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)952    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)953    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)954    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)955    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3956    ;957    ; GFX9-DENORM-LABEL: name: test_4xfloat_add_mul958    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11959    ; GFX9-DENORM-NEXT: {{  $}}960    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0961    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1962    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2963    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3964    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)965    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4966    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5967    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6968    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7969    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)970    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8971    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9972    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr10973    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr11974    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)975    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]976    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]977    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s32>)978    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)979    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)980    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)981    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)982    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3983    ;984    ; GFX10-LABEL: name: test_4xfloat_add_mul985    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11986    ; GFX10-NEXT: {{  $}}987    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0988    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1989    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2990    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3991    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)992    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4993    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5994    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr6995    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr7996    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)997    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr8998    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr9999    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101000    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111001    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1002    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1003    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]1004    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s32>)1005    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1006    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1007    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1008    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)1009    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31010    ;1011    ; GFX10-DENORM-LABEL: name: test_4xfloat_add_mul1012    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111013    ; GFX10-DENORM-NEXT: {{  $}}1014    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01015    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11016    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21017    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31018    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1019    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41020    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51021    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61022    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71023    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1024    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81025    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91026    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101027    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111028    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1029    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1030    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]1031    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s32>)1032    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1033    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1034    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1035    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1036    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31037    %4:_(s32) = COPY $vgpr01038    %5:_(s32) = COPY $vgpr11039    %6:_(s32) = COPY $vgpr21040    %7:_(s32) = COPY $vgpr31041    %0:_(<4 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32), %7(s32)1042    %8:_(s32) = COPY $vgpr41043    %9:_(s32) = COPY $vgpr51044    %10:_(s32) = COPY $vgpr61045    %11:_(s32) = COPY $vgpr71046    %1:_(<4 x s32>) = G_BUILD_VECTOR %8(s32), %9(s32), %10(s32), %11(s32)1047    %12:_(s32) = COPY $vgpr81048    %13:_(s32) = COPY $vgpr91049    %14:_(s32) = COPY $vgpr101050    %15:_(s32) = COPY $vgpr111051    %2:_(<4 x s32>) = G_BUILD_VECTOR %12(s32), %13(s32), %14(s32), %15(s32)1052    %16:_(<4 x s32>) = reassoc G_FMUL %0, %11053    %17:_(<4 x s32>) = reassoc G_FADD %16, %21054    %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32) = G_UNMERGE_VALUES %17(<4 x s32>)1055    $vgpr0 = COPY %19(s32)1056    $vgpr1 = COPY %20(s32)1057    $vgpr2 = COPY %21(s32)1058    $vgpr3 = COPY %22(s32)1059    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31060...1061 1062---1063name:            test_4xfloat_add_mul_contract1064body:             |1065  bb.1.entry:1066    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111067 1068    ; GFX9-LABEL: name: test_4xfloat_add_mul_contract1069    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111070    ; GFX9-NEXT: {{  $}}1071    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01072    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11073    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21074    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31075    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1076    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41077    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51078    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61079    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71080    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1081    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81082    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91083    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101084    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111085    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1086    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(<4 x s32>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]1087    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s32>)1088    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1089    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1090    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1091    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)1092    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31093    ;1094    ; GFX9-DENORM-LABEL: name: test_4xfloat_add_mul_contract1095    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111096    ; GFX9-DENORM-NEXT: {{  $}}1097    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01098    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11099    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21100    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31101    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1102    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41103    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51104    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61105    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71106    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1107    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81108    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91109    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101110    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111111    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1112    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s32>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]1113    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s32>)1114    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1115    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1116    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1117    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1118    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31119    ;1120    ; GFX10-LABEL: name: test_4xfloat_add_mul_contract1121    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111122    ; GFX10-NEXT: {{  $}}1123    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01124    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11125    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21126    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31127    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1128    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41129    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51130    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61131    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71132    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1133    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81134    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91135    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101136    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111137    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1138    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(<4 x s32>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]1139    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s32>)1140    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1141    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1142    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1143    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)1144    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31145    ;1146    ; GFX10-DENORM-LABEL: name: test_4xfloat_add_mul_contract1147    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr111148    ; GFX10-DENORM-NEXT: {{  $}}1149    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01150    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11151    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21152    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31153    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1154    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41155    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51156    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61157    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71158    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1159    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81160    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91161    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101162    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111163    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1164    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s32>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]1165    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s32>)1166    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1167    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1168    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1169    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1170    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31171    %4:_(s32) = COPY $vgpr01172    %5:_(s32) = COPY $vgpr11173    %6:_(s32) = COPY $vgpr21174    %7:_(s32) = COPY $vgpr31175    %0:_(<4 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32), %7(s32)1176    %8:_(s32) = COPY $vgpr41177    %9:_(s32) = COPY $vgpr51178    %10:_(s32) = COPY $vgpr61179    %11:_(s32) = COPY $vgpr71180    %1:_(<4 x s32>) = G_BUILD_VECTOR %8(s32), %9(s32), %10(s32), %11(s32)1181    %12:_(s32) = COPY $vgpr81182    %13:_(s32) = COPY $vgpr91183    %14:_(s32) = COPY $vgpr101184    %15:_(s32) = COPY $vgpr111185    %2:_(<4 x s32>) = G_BUILD_VECTOR %12(s32), %13(s32), %14(s32), %15(s32)1186    %16:_(<4 x s32>) = reassoc contract G_FMUL %0, %11187    %17:_(<4 x s32>) = reassoc contract G_FADD %16, %21188    %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32) = G_UNMERGE_VALUES %17(<4 x s32>)1189    $vgpr0 = COPY %19(s32)1190    $vgpr1 = COPY %20(s32)1191    $vgpr2 = COPY %21(s32)1192    $vgpr3 = COPY %22(s32)1193    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31194...1195 1196---1197name:            test_3xfloat_add_mul_rhs1198body:             |1199  bb.1.entry:1200    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81201 1202    ; GFX9-LABEL: name: test_3xfloat_add_mul_rhs1203    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81204    ; GFX9-NEXT: {{  $}}1205    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01206    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11207    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21208    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1209    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31210    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41211    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51212    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1213    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61214    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71215    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81216    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1217    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1218    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1219    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1220    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1221    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1222    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1223    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21224    ;1225    ; GFX9-DENORM-LABEL: name: test_3xfloat_add_mul_rhs1226    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81227    ; GFX9-DENORM-NEXT: {{  $}}1228    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01229    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11230    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21231    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1232    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31233    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41234    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51235    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1236    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61237    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71238    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81239    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1240    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1241    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1242    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1243    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1244    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1245    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1246    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21247    ;1248    ; GFX10-LABEL: name: test_3xfloat_add_mul_rhs1249    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81250    ; GFX10-NEXT: {{  $}}1251    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01252    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11253    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21254    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1255    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31256    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41257    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51258    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1259    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61260    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71261    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81262    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1263    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1264    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1265    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1266    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1267    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1268    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1269    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21270    ;1271    ; GFX10-DENORM-LABEL: name: test_3xfloat_add_mul_rhs1272    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81273    ; GFX10-DENORM-NEXT: {{  $}}1274    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01275    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11276    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21277    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1278    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31279    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41280    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51281    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1282    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61283    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71284    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81285    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1286    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1287    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1288    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1289    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1290    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1291    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1292    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21293    %4:_(s32) = COPY $vgpr01294    %5:_(s32) = COPY $vgpr11295    %6:_(s32) = COPY $vgpr21296    %0:_(<3 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32)1297    %7:_(s32) = COPY $vgpr31298    %8:_(s32) = COPY $vgpr41299    %9:_(s32) = COPY $vgpr51300    %1:_(<3 x s32>) = G_BUILD_VECTOR %7(s32), %8(s32), %9(s32)1301    %10:_(s32) = COPY $vgpr61302    %11:_(s32) = COPY $vgpr71303    %12:_(s32) = COPY $vgpr81304    %2:_(<3 x s32>) = G_BUILD_VECTOR %10(s32), %11(s32), %12(s32)1305    %13:_(<3 x s32>) = reassoc G_FMUL %0, %11306    %14:_(<3 x s32>) = reassoc G_FADD %2, %131307    %16:_(s32), %17:_(s32), %18:_(s32) = G_UNMERGE_VALUES %14(<3 x s32>)1308    $vgpr0 = COPY %16(s32)1309    $vgpr1 = COPY %17(s32)1310    $vgpr2 = COPY %18(s32)1311    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21312...1313 1314---1315name:            test_3xfloat_add_mul_rhs_contract1316body:             |1317  bb.1.entry:1318    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81319 1320    ; GFX9-LABEL: name: test_3xfloat_add_mul_rhs_contract1321    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81322    ; GFX9-NEXT: {{  $}}1323    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01324    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11325    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21326    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1327    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31328    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41329    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51330    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1331    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61332    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71333    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81334    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1335    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1336    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1337    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1338    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1339    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1340    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1341    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21342    ;1343    ; GFX9-DENORM-LABEL: name: test_3xfloat_add_mul_rhs_contract1344    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81345    ; GFX9-DENORM-NEXT: {{  $}}1346    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01347    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11348    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21349    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1350    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31351    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41352    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51353    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1354    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61355    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71356    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81357    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1358    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1359    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1360    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1361    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1362    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1363    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1364    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21365    ;1366    ; GFX10-LABEL: name: test_3xfloat_add_mul_rhs_contract1367    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81368    ; GFX10-NEXT: {{  $}}1369    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01370    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11371    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21372    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1373    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31374    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41375    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51376    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1377    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61378    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71379    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81380    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1381    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1382    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1383    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1384    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1385    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1386    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1387    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21388    ;1389    ; GFX10-DENORM-LABEL: name: test_3xfloat_add_mul_rhs_contract1390    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81391    ; GFX10-DENORM-NEXT: {{  $}}1392    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01393    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11394    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21395    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1396    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31397    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41398    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51399    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1400    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61401    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71402    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81403    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1404    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1405    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]1406    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1407    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1408    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1409    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1410    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21411    %4:_(s32) = COPY $vgpr01412    %5:_(s32) = COPY $vgpr11413    %6:_(s32) = COPY $vgpr21414    %0:_(<3 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32)1415    %7:_(s32) = COPY $vgpr31416    %8:_(s32) = COPY $vgpr41417    %9:_(s32) = COPY $vgpr51418    %1:_(<3 x s32>) = G_BUILD_VECTOR %7(s32), %8(s32), %9(s32)1419    %10:_(s32) = COPY $vgpr61420    %11:_(s32) = COPY $vgpr71421    %12:_(s32) = COPY $vgpr81422    %2:_(<3 x s32>) = G_BUILD_VECTOR %10(s32), %11(s32), %12(s32)1423    %13:_(<3 x s32>) = reassoc G_FMUL %0, %11424    %14:_(<3 x s32>) = reassoc G_FADD %2, %131425    %16:_(s32), %17:_(s32), %18:_(s32) = G_UNMERGE_VALUES %14(<3 x s32>)1426    $vgpr0 = COPY %16(s32)1427    $vgpr1 = COPY %17(s32)1428    $vgpr2 = COPY %18(s32)1429    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21430...1431 1432---1433name:            test_4xhalf_add_mul1434body:             |1435  bb.1.entry:1436    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51437 1438    ; GFX9-LABEL: name: test_4xhalf_add_mul1439    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51440    ; GFX9-NEXT: {{  $}}1441    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01442    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11443    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1444    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21445    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31446    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1447    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41448    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51449    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1450    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = reassoc G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1451    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = reassoc G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1452    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1453    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1454    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1455    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11456    ;1457    ; GFX9-DENORM-LABEL: name: test_4xhalf_add_mul1458    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51459    ; GFX9-DENORM-NEXT: {{  $}}1460    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01461    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11462    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1463    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21464    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31465    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1466    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41467    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51468    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1469    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = reassoc G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1470    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = reassoc G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1471    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1472    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1473    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1474    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11475    ;1476    ; GFX10-LABEL: name: test_4xhalf_add_mul1477    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51478    ; GFX10-NEXT: {{  $}}1479    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01480    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11481    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1482    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21483    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31484    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1485    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41486    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51487    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1488    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = reassoc G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1489    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = reassoc G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1490    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1491    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1492    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1493    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11494    ;1495    ; GFX10-DENORM-LABEL: name: test_4xhalf_add_mul1496    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51497    ; GFX10-DENORM-NEXT: {{  $}}1498    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01499    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11500    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1501    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21502    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31503    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1504    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41505    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51506    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1507    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = reassoc G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1508    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = reassoc G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1509    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1510    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1511    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1512    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11513    %4:_(<2 x s16>) = COPY $vgpr01514    %5:_(<2 x s16>) = COPY $vgpr11515    %0:_(<4 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>)1516    %6:_(<2 x s16>) = COPY $vgpr21517    %7:_(<2 x s16>) = COPY $vgpr31518    %1:_(<4 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>)1519    %8:_(<2 x s16>) = COPY $vgpr41520    %9:_(<2 x s16>) = COPY $vgpr51521    %2:_(<4 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>)1522    %10:_(<4 x s16>) = reassoc G_FMUL %0, %11523    %11:_(<4 x s16>) = reassoc G_FADD %10, %21524    %13:_(<2 x s16>), %14:_(<2 x s16>) = G_UNMERGE_VALUES %11(<4 x s16>)1525    $vgpr0 = COPY %13(<2 x s16>)1526    $vgpr1 = COPY %14(<2 x s16>)1527    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11528...1529 1530---1531name:            test_4xhalf_add_mul_contract1532body:             |1533  bb.1.entry:1534    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51535 1536    ; GFX9-LABEL: name: test_4xhalf_add_mul_contract1537    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51538    ; GFX9-NEXT: {{  $}}1539    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01540    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11541    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1542    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21543    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31544    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1545    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41546    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51547    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1548    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(<4 x s16>) = G_FMA [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]], [[CONCAT_VECTORS2]]1549    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FMA]](<4 x s16>)1550    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1551    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1552    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11553    ;1554    ; GFX9-DENORM-LABEL: name: test_4xhalf_add_mul_contract1555    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51556    ; GFX9-DENORM-NEXT: {{  $}}1557    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01558    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11559    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1560    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21561    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31562    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1563    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41564    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51565    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1566    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s16>) = G_FMA [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]], [[CONCAT_VECTORS2]]1567    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FMA]](<4 x s16>)1568    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1569    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1570    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11571    ;1572    ; GFX10-LABEL: name: test_4xhalf_add_mul_contract1573    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51574    ; GFX10-NEXT: {{  $}}1575    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01576    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11577    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1578    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21579    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31580    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1581    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41582    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51583    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1584    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(<4 x s16>) = G_FMA [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]], [[CONCAT_VECTORS2]]1585    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FMA]](<4 x s16>)1586    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1587    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1588    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11589    ;1590    ; GFX10-DENORM-LABEL: name: test_4xhalf_add_mul_contract1591    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51592    ; GFX10-DENORM-NEXT: {{  $}}1593    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01594    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11595    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1596    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21597    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31598    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1599    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41600    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51601    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1602    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s16>) = G_FMA [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]], [[CONCAT_VECTORS2]]1603    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FMA]](<4 x s16>)1604    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1605    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1606    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11607    %4:_(<2 x s16>) = COPY $vgpr01608    %5:_(<2 x s16>) = COPY $vgpr11609    %0:_(<4 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>)1610    %6:_(<2 x s16>) = COPY $vgpr21611    %7:_(<2 x s16>) = COPY $vgpr31612    %1:_(<4 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>)1613    %8:_(<2 x s16>) = COPY $vgpr41614    %9:_(<2 x s16>) = COPY $vgpr51615    %2:_(<4 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>)1616    %10:_(<4 x s16>) = reassoc contract G_FMUL %0, %11617    %11:_(<4 x s16>) = reassoc contract G_FADD %10, %21618    %13:_(<2 x s16>), %14:_(<2 x s16>) = G_UNMERGE_VALUES %11(<4 x s16>)1619    $vgpr0 = COPY %13(<2 x s16>)1620    $vgpr1 = COPY %14(<2 x s16>)1621    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11622...1623 1624---1625name:            test_3xhalf_add_mul_rhs1626body:             |1627  bb.1.entry:1628    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51629 1630    ; GFX9-LABEL: name: test_3xhalf_add_mul_rhs1631    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51632    ; GFX9-NEXT: {{  $}}1633    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01634    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11635    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1636    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1637    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1638    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21639    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31640    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1641    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1642    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41643    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51644    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1645    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1646    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = reassoc G_FMUL [[UV]], [[UV2]]1647    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = reassoc G_FADD [[UV4]], [[FMUL]]1648    ; GFX9-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1649    ; GFX9-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1650    ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1651    ; GFX9-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1652    ; GFX9-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1653    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11654    ;1655    ; GFX9-DENORM-LABEL: name: test_3xhalf_add_mul_rhs1656    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51657    ; GFX9-DENORM-NEXT: {{  $}}1658    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01659    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11660    ; GFX9-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1661    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1662    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1663    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21664    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31665    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1666    ; GFX9-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1667    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41668    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51669    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1670    ; GFX9-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1671    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = reassoc G_FMUL [[UV]], [[UV2]]1672    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = reassoc G_FADD [[UV4]], [[FMUL]]1673    ; GFX9-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1674    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1675    ; GFX9-DENORM-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1676    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1677    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1678    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11679    ;1680    ; GFX10-LABEL: name: test_3xhalf_add_mul_rhs1681    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51682    ; GFX10-NEXT: {{  $}}1683    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01684    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11685    ; GFX10-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1686    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1687    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1688    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21689    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31690    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1691    ; GFX10-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1692    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41693    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51694    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1695    ; GFX10-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1696    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = reassoc G_FMUL [[UV]], [[UV2]]1697    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = reassoc G_FADD [[UV4]], [[FMUL]]1698    ; GFX10-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1699    ; GFX10-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1700    ; GFX10-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1701    ; GFX10-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1702    ; GFX10-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1703    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11704    ;1705    ; GFX10-DENORM-LABEL: name: test_3xhalf_add_mul_rhs1706    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51707    ; GFX10-DENORM-NEXT: {{  $}}1708    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01709    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11710    ; GFX10-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1711    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1712    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1713    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21714    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31715    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1716    ; GFX10-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1717    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41718    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51719    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1720    ; GFX10-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1721    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = reassoc G_FMUL [[UV]], [[UV2]]1722    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = reassoc G_FADD [[UV4]], [[FMUL]]1723    ; GFX10-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1724    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1725    ; GFX10-DENORM-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1726    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1727    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1728    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11729    %4:_(<2 x s16>) = COPY $vgpr01730    %5:_(<2 x s16>) = COPY $vgpr11731    %10:_(<2 x s16>) = G_IMPLICIT_DEF1732    %11:_(<6 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>), %10(<2 x s16>)1733    %0:_(<3 x s16>), %12:_(<3 x s16>) = G_UNMERGE_VALUES %11(<6 x s16>)1734    %6:_(<2 x s16>) = COPY $vgpr21735    %7:_(<2 x s16>) = COPY $vgpr31736    %13:_(<6 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>), %10(<2 x s16>)1737    %1:_(<3 x s16>), %14:_(<3 x s16>) = G_UNMERGE_VALUES %13(<6 x s16>)1738    %8:_(<2 x s16>) = COPY $vgpr41739    %9:_(<2 x s16>) = COPY $vgpr51740    %15:_(<6 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>), %10(<2 x s16>)1741    %2:_(<3 x s16>), %16:_(<3 x s16>) = G_UNMERGE_VALUES %15(<6 x s16>)1742    %17:_(<3 x s16>) = reassoc G_FMUL %0, %11743    %18:_(<3 x s16>) = reassoc G_FADD %2, %171744    %22:_(<3 x s16>) = G_IMPLICIT_DEF1745    %23:_(<6 x s16>) = G_CONCAT_VECTORS %18(<3 x s16>), %22(<3 x s16>)1746    %20:_(<2 x s16>), %21:_(<2 x s16>), %24:_(<2 x s16>) = G_UNMERGE_VALUES %23(<6 x s16>)1747    $vgpr0 = COPY %20(<2 x s16>)1748    $vgpr1 = COPY %21(<2 x s16>)1749    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11750...1751 1752---1753name:            test_3xhalf_add_mul_rhs_contract1754body:             |1755  bb.1.entry:1756    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51757 1758    ; GFX9-LABEL: name: test_3xhalf_add_mul_rhs_contract1759    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51760    ; GFX9-NEXT: {{  $}}1761    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01762    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11763    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1764    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1765    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1766    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21767    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31768    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1769    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1770    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41771    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51772    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1773    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1774    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(<3 x s16>) = G_FMA [[UV]], [[UV2]], [[UV4]]1775    ; GFX9-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1776    ; GFX9-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FMA]](<3 x s16>), [[DEF1]](<3 x s16>)1777    ; GFX9-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1778    ; GFX9-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1779    ; GFX9-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1780    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11781    ;1782    ; GFX9-DENORM-LABEL: name: test_3xhalf_add_mul_rhs_contract1783    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51784    ; GFX9-DENORM-NEXT: {{  $}}1785    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01786    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11787    ; GFX9-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1788    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1789    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1790    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21791    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31792    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1793    ; GFX9-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1794    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41795    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51796    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1797    ; GFX9-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1798    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<3 x s16>) = G_FMA [[UV]], [[UV2]], [[UV4]]1799    ; GFX9-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1800    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FMA]](<3 x s16>), [[DEF1]](<3 x s16>)1801    ; GFX9-DENORM-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1802    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1803    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1804    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11805    ;1806    ; GFX10-LABEL: name: test_3xhalf_add_mul_rhs_contract1807    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51808    ; GFX10-NEXT: {{  $}}1809    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01810    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11811    ; GFX10-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1812    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1813    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1814    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21815    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31816    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1817    ; GFX10-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1818    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41819    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51820    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1821    ; GFX10-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1822    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(<3 x s16>) = G_FMA [[UV]], [[UV2]], [[UV4]]1823    ; GFX10-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1824    ; GFX10-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FMA]](<3 x s16>), [[DEF1]](<3 x s16>)1825    ; GFX10-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1826    ; GFX10-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1827    ; GFX10-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1828    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11829    ;1830    ; GFX10-DENORM-LABEL: name: test_3xhalf_add_mul_rhs_contract1831    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51832    ; GFX10-DENORM-NEXT: {{  $}}1833    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01834    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11835    ; GFX10-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1836    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1837    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1838    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21839    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31840    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1841    ; GFX10-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1842    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41843    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51844    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1845    ; GFX10-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1846    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<3 x s16>) = G_FMA [[UV]], [[UV2]], [[UV4]]1847    ; GFX10-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1848    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FMA]](<3 x s16>), [[DEF1]](<3 x s16>)1849    ; GFX10-DENORM-NEXT: [[UV6:%[0-9]+]]:_(<2 x s16>), [[UV7:%[0-9]+]]:_(<2 x s16>), [[UV8:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS3]](<6 x s16>)1850    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1851    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1852    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11853    %4:_(<2 x s16>) = COPY $vgpr01854    %5:_(<2 x s16>) = COPY $vgpr11855    %10:_(<2 x s16>) = G_IMPLICIT_DEF1856    %11:_(<6 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>), %10(<2 x s16>)1857    %0:_(<3 x s16>), %12:_(<3 x s16>) = G_UNMERGE_VALUES %11(<6 x s16>)1858    %6:_(<2 x s16>) = COPY $vgpr21859    %7:_(<2 x s16>) = COPY $vgpr31860    %13:_(<6 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>), %10(<2 x s16>)1861    %1:_(<3 x s16>), %14:_(<3 x s16>) = G_UNMERGE_VALUES %13(<6 x s16>)1862    %8:_(<2 x s16>) = COPY $vgpr41863    %9:_(<2 x s16>) = COPY $vgpr51864    %15:_(<6 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>), %10(<2 x s16>)1865    %2:_(<3 x s16>), %16:_(<3 x s16>) = G_UNMERGE_VALUES %15(<6 x s16>)1866    %17:_(<3 x s16>) = reassoc contract G_FMUL %0, %11867    %18:_(<3 x s16>) = reassoc contract G_FADD %2, %171868    %22:_(<3 x s16>) = G_IMPLICIT_DEF1869    %23:_(<6 x s16>) = G_CONCAT_VECTORS %18(<3 x s16>), %22(<3 x s16>)1870    %20:_(<2 x s16>), %21:_(<2 x s16>), %24:_(<2 x s16>) = G_UNMERGE_VALUES %23(<6 x s16>)1871    $vgpr0 = COPY %20(<2 x s16>)1872    $vgpr1 = COPY %21(<2 x s16>)1873    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11874...1875 1876---1877name:            test_4xdouble_add_mul1878body:             |1879  bb.1.entry:1880    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr231881 1882    ; GFX9-LABEL: name: test_4xdouble_add_mul1883    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr231884    ; GFX9-NEXT: {{  $}}1885    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01886    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11887    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21888    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31889    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41890    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51891    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61892    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71893    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1894    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1895    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1896    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1897    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)1898    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81899    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91900    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101901    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111902    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121903    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131904    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141905    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151906    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1907    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1908    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1909    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1910    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)1911    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161912    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171913    ; GFX9-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181914    ; GFX9-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191915    ; GFX9-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201916    ; GFX9-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211917    ; GFX9-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221918    ; GFX9-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231919    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)1920    ; GFX9-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)1921    ; GFX9-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)1922    ; GFX9-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)1923    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)1924    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1925    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]1926    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s64>)1927    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1928    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1929    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1930    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)1931    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)1932    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)1933    ; GFX9-NEXT: $vgpr6 = COPY [[UV6]](s32)1934    ; GFX9-NEXT: $vgpr7 = COPY [[UV7]](s32)1935    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr71936    ;1937    ; GFX9-DENORM-LABEL: name: test_4xdouble_add_mul1938    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr231939    ; GFX9-DENORM-NEXT: {{  $}}1940    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01941    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11942    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21943    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31944    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41945    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51946    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61947    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71948    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1949    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1950    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1951    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)1952    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)1953    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81954    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91955    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101956    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111957    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr121958    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr131959    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr141960    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr151961    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)1962    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)1963    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)1964    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)1965    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)1966    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr161967    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr171968    ; GFX9-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr181969    ; GFX9-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr191970    ; GFX9-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr201971    ; GFX9-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr211972    ; GFX9-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr221973    ; GFX9-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr231974    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)1975    ; GFX9-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)1976    ; GFX9-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)1977    ; GFX9-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)1978    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)1979    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1980    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]1981    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s64>)1982    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1983    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1984    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1985    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1986    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)1987    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)1988    ; GFX9-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)1989    ; GFX9-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)1990    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr71991    ;1992    ; GFX10-LABEL: name: test_4xdouble_add_mul1993    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr231994    ; GFX10-NEXT: {{  $}}1995    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01996    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11997    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21998    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31999    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42000    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52001    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62002    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72003    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2004    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2005    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2006    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2007    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2008    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82009    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92010    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102011    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112012    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122013    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132014    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142015    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152016    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2017    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2018    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2019    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2020    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2021    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162022    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172023    ; GFX10-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182024    ; GFX10-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192025    ; GFX10-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202026    ; GFX10-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212027    ; GFX10-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222028    ; GFX10-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232029    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2030    ; GFX10-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2031    ; GFX10-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2032    ; GFX10-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2033    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2034    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2035    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]2036    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s64>)2037    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2038    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2039    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2040    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2041    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2042    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2043    ; GFX10-NEXT: $vgpr6 = COPY [[UV6]](s32)2044    ; GFX10-NEXT: $vgpr7 = COPY [[UV7]](s32)2045    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72046    ;2047    ; GFX10-DENORM-LABEL: name: test_4xdouble_add_mul2048    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232049    ; GFX10-DENORM-NEXT: {{  $}}2050    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02051    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12052    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22053    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32054    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42055    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52056    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62057    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72058    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2059    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2060    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2061    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2062    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2063    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82064    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92065    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102066    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112067    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122068    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132069    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142070    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152071    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2072    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2073    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2074    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2075    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2076    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162077    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172078    ; GFX10-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182079    ; GFX10-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192080    ; GFX10-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202081    ; GFX10-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212082    ; GFX10-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222083    ; GFX10-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232084    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2085    ; GFX10-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2086    ; GFX10-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2087    ; GFX10-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2088    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2089    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2090    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = reassoc G_FADD [[FMUL]], [[BUILD_VECTOR2]]2091    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<4 x s64>)2092    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2093    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2094    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2095    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2096    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2097    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2098    ; GFX10-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2099    ; GFX10-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2100    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72101    %4:_(s32) = COPY $vgpr02102    %5:_(s32) = COPY $vgpr12103    %6:_(s32) = COPY $vgpr22104    %7:_(s32) = COPY $vgpr32105    %8:_(s32) = COPY $vgpr42106    %9:_(s32) = COPY $vgpr52107    %10:_(s32) = COPY $vgpr62108    %11:_(s32) = COPY $vgpr72109    %28:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2110    %29:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2111    %30:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2112    %31:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2113    %0:_(<4 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64), %31(s64)2114    %12:_(s32) = COPY $vgpr82115    %13:_(s32) = COPY $vgpr92116    %14:_(s32) = COPY $vgpr102117    %15:_(s32) = COPY $vgpr112118    %16:_(s32) = COPY $vgpr122119    %17:_(s32) = COPY $vgpr132120    %18:_(s32) = COPY $vgpr142121    %19:_(s32) = COPY $vgpr152122    %32:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2123    %33:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2124    %34:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2125    %35:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2126    %1:_(<4 x s64>) = G_BUILD_VECTOR %32(s64), %33(s64), %34(s64), %35(s64)2127    %20:_(s32) = COPY $vgpr162128    %21:_(s32) = COPY $vgpr172129    %22:_(s32) = COPY $vgpr182130    %23:_(s32) = COPY $vgpr192131    %24:_(s32) = COPY $vgpr202132    %25:_(s32) = COPY $vgpr212133    %26:_(s32) = COPY $vgpr222134    %27:_(s32) = COPY $vgpr232135    %36:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2136    %37:_(s64) = G_MERGE_VALUES %22(s32), %23(s32)2137    %38:_(s64) = G_MERGE_VALUES %24(s32), %25(s32)2138    %39:_(s64) = G_MERGE_VALUES %26(s32), %27(s32)2139    %2:_(<4 x s64>) = G_BUILD_VECTOR %36(s64), %37(s64), %38(s64), %39(s64)2140    %40:_(<4 x s64>) = reassoc G_FMUL %0, %12141    %41:_(<4 x s64>) = reassoc G_FADD %40, %22142    %43:_(s32), %44:_(s32), %45:_(s32), %46:_(s32), %47:_(s32), %48:_(s32), %49:_(s32), %50:_(s32) = G_UNMERGE_VALUES %41(<4 x s64>)2143    $vgpr0 = COPY %43(s32)2144    $vgpr1 = COPY %44(s32)2145    $vgpr2 = COPY %45(s32)2146    $vgpr3 = COPY %46(s32)2147    $vgpr4 = COPY %47(s32)2148    $vgpr5 = COPY %48(s32)2149    $vgpr6 = COPY %49(s32)2150    $vgpr7 = COPY %50(s32)2151    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72152...2153 2154---2155name:            test_4xdouble_add_mul_contract2156body:             |2157  bb.1.entry:2158    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232159 2160    ; GFX9-LABEL: name: test_4xdouble_add_mul_contract2161    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232162    ; GFX9-NEXT: {{  $}}2163    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02164    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12165    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22166    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32167    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42168    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52169    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62170    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72171    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2172    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2173    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2174    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2175    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2176    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82177    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92178    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102179    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112180    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122181    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132182    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142183    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152184    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2185    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2186    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2187    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2188    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2189    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162190    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172191    ; GFX9-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182192    ; GFX9-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192193    ; GFX9-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202194    ; GFX9-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212195    ; GFX9-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222196    ; GFX9-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232197    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2198    ; GFX9-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2199    ; GFX9-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2200    ; GFX9-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2201    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2202    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(<4 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2203    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s64>)2204    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2205    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2206    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2207    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2208    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2209    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2210    ; GFX9-NEXT: $vgpr6 = COPY [[UV6]](s32)2211    ; GFX9-NEXT: $vgpr7 = COPY [[UV7]](s32)2212    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72213    ;2214    ; GFX9-DENORM-LABEL: name: test_4xdouble_add_mul_contract2215    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232216    ; GFX9-DENORM-NEXT: {{  $}}2217    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02218    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12219    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22220    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32221    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42222    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52223    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62224    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72225    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2226    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2227    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2228    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2229    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2230    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82231    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92232    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102233    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112234    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122235    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132236    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142237    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152238    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2239    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2240    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2241    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2242    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2243    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162244    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172245    ; GFX9-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182246    ; GFX9-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192247    ; GFX9-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202248    ; GFX9-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212249    ; GFX9-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222250    ; GFX9-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232251    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2252    ; GFX9-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2253    ; GFX9-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2254    ; GFX9-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2255    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2256    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2257    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s64>)2258    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2259    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2260    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2261    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2262    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2263    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2264    ; GFX9-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2265    ; GFX9-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2266    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72267    ;2268    ; GFX10-LABEL: name: test_4xdouble_add_mul_contract2269    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232270    ; GFX10-NEXT: {{  $}}2271    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02272    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12273    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22274    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32275    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42276    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52277    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62278    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72279    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2280    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2281    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2282    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2283    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2284    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82285    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92286    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102287    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112288    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122289    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132290    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142291    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152292    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2293    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2294    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2295    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2296    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2297    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162298    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172299    ; GFX10-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182300    ; GFX10-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192301    ; GFX10-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202302    ; GFX10-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212303    ; GFX10-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222304    ; GFX10-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232305    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2306    ; GFX10-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2307    ; GFX10-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2308    ; GFX10-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2309    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2310    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(<4 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2311    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s64>)2312    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2313    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2314    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2315    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2316    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2317    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2318    ; GFX10-NEXT: $vgpr6 = COPY [[UV6]](s32)2319    ; GFX10-NEXT: $vgpr7 = COPY [[UV7]](s32)2320    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72321    ;2322    ; GFX10-DENORM-LABEL: name: test_4xdouble_add_mul_contract2323    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232324    ; GFX10-DENORM-NEXT: {{  $}}2325    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02326    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12327    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22328    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32329    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42330    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52331    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62332    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72333    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2334    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2335    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2336    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2337    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2338    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82339    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92340    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102341    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112342    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122343    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132344    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142345    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152346    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2347    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2348    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2349    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2350    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2351    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162352    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172353    ; GFX10-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182354    ; GFX10-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192355    ; GFX10-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202356    ; GFX10-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212357    ; GFX10-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222358    ; GFX10-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232359    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2360    ; GFX10-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2361    ; GFX10-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2362    ; GFX10-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2363    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2364    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<4 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2365    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<4 x s64>)2366    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2367    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2368    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2369    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2370    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2371    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2372    ; GFX10-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2373    ; GFX10-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2374    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72375    %4:_(s32) = COPY $vgpr02376    %5:_(s32) = COPY $vgpr12377    %6:_(s32) = COPY $vgpr22378    %7:_(s32) = COPY $vgpr32379    %8:_(s32) = COPY $vgpr42380    %9:_(s32) = COPY $vgpr52381    %10:_(s32) = COPY $vgpr62382    %11:_(s32) = COPY $vgpr72383    %28:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2384    %29:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2385    %30:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2386    %31:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2387    %0:_(<4 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64), %31(s64)2388    %12:_(s32) = COPY $vgpr82389    %13:_(s32) = COPY $vgpr92390    %14:_(s32) = COPY $vgpr102391    %15:_(s32) = COPY $vgpr112392    %16:_(s32) = COPY $vgpr122393    %17:_(s32) = COPY $vgpr132394    %18:_(s32) = COPY $vgpr142395    %19:_(s32) = COPY $vgpr152396    %32:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2397    %33:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2398    %34:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2399    %35:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2400    %1:_(<4 x s64>) = G_BUILD_VECTOR %32(s64), %33(s64), %34(s64), %35(s64)2401    %20:_(s32) = COPY $vgpr162402    %21:_(s32) = COPY $vgpr172403    %22:_(s32) = COPY $vgpr182404    %23:_(s32) = COPY $vgpr192405    %24:_(s32) = COPY $vgpr202406    %25:_(s32) = COPY $vgpr212407    %26:_(s32) = COPY $vgpr222408    %27:_(s32) = COPY $vgpr232409    %36:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2410    %37:_(s64) = G_MERGE_VALUES %22(s32), %23(s32)2411    %38:_(s64) = G_MERGE_VALUES %24(s32), %25(s32)2412    %39:_(s64) = G_MERGE_VALUES %26(s32), %27(s32)2413    %2:_(<4 x s64>) = G_BUILD_VECTOR %36(s64), %37(s64), %38(s64), %39(s64)2414    %40:_(<4 x s64>) = reassoc contract G_FMUL %0, %12415    %41:_(<4 x s64>) = reassoc contract G_FADD %40, %22416    %43:_(s32), %44:_(s32), %45:_(s32), %46:_(s32), %47:_(s32), %48:_(s32), %49:_(s32), %50:_(s32) = G_UNMERGE_VALUES %41(<4 x s64>)2417    $vgpr0 = COPY %43(s32)2418    $vgpr1 = COPY %44(s32)2419    $vgpr2 = COPY %45(s32)2420    $vgpr3 = COPY %46(s32)2421    $vgpr4 = COPY %47(s32)2422    $vgpr5 = COPY %48(s32)2423    $vgpr6 = COPY %49(s32)2424    $vgpr7 = COPY %50(s32)2425    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72426...2427 2428---2429name:            test_3xdouble_add_mul_rhs2430body:             |2431  bb.1.entry:2432    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172433 2434    ; GFX9-LABEL: name: test_3xdouble_add_mul_rhs2435    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172436    ; GFX9-NEXT: {{  $}}2437    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02438    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12439    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22440    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32441    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42442    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52443    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2444    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2445    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2446    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2447    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62448    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72449    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82450    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92451    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102452    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112453    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2454    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2455    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2456    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2457    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122458    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132459    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142460    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152461    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162462    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172463    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2464    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2465    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2466    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2467    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2468    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]2469    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s64>)2470    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2471    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2472    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2473    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2474    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2475    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2476    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52477    ;2478    ; GFX9-DENORM-LABEL: name: test_3xdouble_add_mul_rhs2479    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172480    ; GFX9-DENORM-NEXT: {{  $}}2481    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02482    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12483    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22484    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32485    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42486    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52487    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2488    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2489    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2490    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2491    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62492    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72493    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82494    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92495    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102496    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112497    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2498    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2499    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2500    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2501    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122502    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132503    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142504    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152505    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162506    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172507    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2508    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2509    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2510    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2511    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2512    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]2513    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s64>)2514    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2515    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2516    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2517    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2518    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2519    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2520    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52521    ;2522    ; GFX10-LABEL: name: test_3xdouble_add_mul_rhs2523    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172524    ; GFX10-NEXT: {{  $}}2525    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02526    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12527    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22528    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32529    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42530    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52531    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2532    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2533    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2534    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2535    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62536    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72537    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82538    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92539    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102540    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112541    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2542    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2543    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2544    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2545    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122546    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132547    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142548    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152549    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162550    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172551    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2552    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2553    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2554    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2555    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2556    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]2557    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s64>)2558    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2559    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2560    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2561    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2562    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2563    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2564    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52565    ;2566    ; GFX10-DENORM-LABEL: name: test_3xdouble_add_mul_rhs2567    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172568    ; GFX10-DENORM-NEXT: {{  $}}2569    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02570    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12571    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22572    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32573    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42574    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52575    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2576    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2577    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2578    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2579    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62580    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72581    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82582    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92583    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102584    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112585    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2586    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2587    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2588    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2589    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122590    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132591    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142592    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152593    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162594    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172595    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2596    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2597    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2598    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2599    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = reassoc G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2600    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = reassoc G_FADD [[BUILD_VECTOR2]], [[FMUL]]2601    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s64>)2602    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2603    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2604    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2605    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2606    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2607    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2608    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52609    %4:_(s32) = COPY $vgpr02610    %5:_(s32) = COPY $vgpr12611    %6:_(s32) = COPY $vgpr22612    %7:_(s32) = COPY $vgpr32613    %8:_(s32) = COPY $vgpr42614    %9:_(s32) = COPY $vgpr52615    %22:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2616    %23:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2617    %24:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2618    %0:_(<3 x s64>) = G_BUILD_VECTOR %22(s64), %23(s64), %24(s64)2619    %10:_(s32) = COPY $vgpr62620    %11:_(s32) = COPY $vgpr72621    %12:_(s32) = COPY $vgpr82622    %13:_(s32) = COPY $vgpr92623    %14:_(s32) = COPY $vgpr102624    %15:_(s32) = COPY $vgpr112625    %25:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2626    %26:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2627    %27:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2628    %1:_(<3 x s64>) = G_BUILD_VECTOR %25(s64), %26(s64), %27(s64)2629    %16:_(s32) = COPY $vgpr122630    %17:_(s32) = COPY $vgpr132631    %18:_(s32) = COPY $vgpr142632    %19:_(s32) = COPY $vgpr152633    %20:_(s32) = COPY $vgpr162634    %21:_(s32) = COPY $vgpr172635    %28:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2636    %29:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2637    %30:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2638    %2:_(<3 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64)2639    %31:_(<3 x s64>) = reassoc G_FMUL %0, %12640    %32:_(<3 x s64>) = reassoc G_FADD %2, %312641    %34:_(s32), %35:_(s32), %36:_(s32), %37:_(s32), %38:_(s32), %39:_(s32) = G_UNMERGE_VALUES %32(<3 x s64>)2642    $vgpr0 = COPY %34(s32)2643    $vgpr1 = COPY %35(s32)2644    $vgpr2 = COPY %36(s32)2645    $vgpr3 = COPY %37(s32)2646    $vgpr4 = COPY %38(s32)2647    $vgpr5 = COPY %39(s32)2648    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52649...2650 2651---2652name:            test_3xdouble_add_mul_rhs_contract2653body:             |2654  bb.1.entry:2655    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172656 2657    ; GFX9-LABEL: name: test_3xdouble_add_mul_rhs_contract2658    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172659    ; GFX9-NEXT: {{  $}}2660    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02661    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12662    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22663    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32664    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42665    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52666    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2667    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2668    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2669    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2670    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62671    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72672    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82673    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92674    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102675    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112676    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2677    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2678    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2679    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2680    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122681    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132682    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142683    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152684    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162685    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172686    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2687    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2688    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2689    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2690    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(<3 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2691    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<3 x s64>)2692    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2693    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2694    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2695    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2696    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2697    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2698    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52699    ;2700    ; GFX9-DENORM-LABEL: name: test_3xdouble_add_mul_rhs_contract2701    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172702    ; GFX9-DENORM-NEXT: {{  $}}2703    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02704    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12705    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22706    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32707    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42708    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52709    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2710    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2711    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2712    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2713    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62714    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72715    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82716    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92717    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102718    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112719    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2720    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2721    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2722    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2723    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122724    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132725    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142726    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152727    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162728    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172729    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2730    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2731    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2732    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2733    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<3 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2734    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<3 x s64>)2735    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2736    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2737    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2738    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2739    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2740    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2741    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52742    ;2743    ; GFX10-LABEL: name: test_3xdouble_add_mul_rhs_contract2744    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172745    ; GFX10-NEXT: {{  $}}2746    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02747    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12748    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22749    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32750    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42751    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52752    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2753    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2754    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2755    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2756    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62757    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72758    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82759    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92760    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102761    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112762    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2763    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2764    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2765    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2766    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122767    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132768    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142769    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152770    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162771    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172772    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2773    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2774    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2775    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2776    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(<3 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2777    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<3 x s64>)2778    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2779    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2780    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2781    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2782    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2783    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2784    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52785    ;2786    ; GFX10-DENORM-LABEL: name: test_3xdouble_add_mul_rhs_contract2787    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172788    ; GFX10-DENORM-NEXT: {{  $}}2789    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02790    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12791    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22792    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32793    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42794    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52795    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2796    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2797    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2798    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2799    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62800    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72801    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82802    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92803    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102804    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112805    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2806    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2807    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2808    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2809    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122810    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132811    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142812    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152813    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162814    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172815    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2816    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2817    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2818    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2819    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(<3 x s64>) = G_FMA [[BUILD_VECTOR]], [[BUILD_VECTOR1]], [[BUILD_VECTOR2]]2820    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32), [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](<3 x s64>)2821    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2822    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2823    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2824    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2825    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2826    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2827    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52828    %4:_(s32) = COPY $vgpr02829    %5:_(s32) = COPY $vgpr12830    %6:_(s32) = COPY $vgpr22831    %7:_(s32) = COPY $vgpr32832    %8:_(s32) = COPY $vgpr42833    %9:_(s32) = COPY $vgpr52834    %22:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2835    %23:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2836    %24:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2837    %0:_(<3 x s64>) = G_BUILD_VECTOR %22(s64), %23(s64), %24(s64)2838    %10:_(s32) = COPY $vgpr62839    %11:_(s32) = COPY $vgpr72840    %12:_(s32) = COPY $vgpr82841    %13:_(s32) = COPY $vgpr92842    %14:_(s32) = COPY $vgpr102843    %15:_(s32) = COPY $vgpr112844    %25:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2845    %26:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2846    %27:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2847    %1:_(<3 x s64>) = G_BUILD_VECTOR %25(s64), %26(s64), %27(s64)2848    %16:_(s32) = COPY $vgpr122849    %17:_(s32) = COPY $vgpr132850    %18:_(s32) = COPY $vgpr142851    %19:_(s32) = COPY $vgpr152852    %20:_(s32) = COPY $vgpr162853    %21:_(s32) = COPY $vgpr172854    %28:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2855    %29:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2856    %30:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2857    %2:_(<3 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64)2858    %31:_(<3 x s64>) = reassoc contract G_FMUL %0, %12859    %32:_(<3 x s64>) = reassoc contract G_FADD %2, %312860    %34:_(s32), %35:_(s32), %36:_(s32), %37:_(s32), %38:_(s32), %39:_(s32) = G_UNMERGE_VALUES %32(<3 x s64>)2861    $vgpr0 = COPY %34(s32)2862    $vgpr1 = COPY %35(s32)2863    $vgpr2 = COPY %36(s32)2864    $vgpr3 = COPY %37(s32)2865    $vgpr4 = COPY %38(s32)2866    $vgpr5 = COPY %39(s32)2867    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52868...2869