brintos

brintos / llvm-project-archived public Read only

0
0
Text · 196.1 KiB · b770d43 Raw
3174 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-postlegalizer-combiner %s -o - | FileCheck -check-prefix=GFX9 %s3# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-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-postlegalizer-combiner %s -o - | FileCheck -check-prefix=GFX10 %s5# RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-postlegalizer-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) = G_FMUL [[COPY]], [[COPY1]]20    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]31    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]42    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]53    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL %0, %160    %5:_(s32) = 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) = contract G_FMUL %0, %1114    %5:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]132    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]143    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]154    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL [[COPY]], [[COPY1]]165    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = 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) = G_FMUL %0, %1172    %5:_(s32) = 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) = contract G_FMUL %0, %1226    %5:_(s32) = contract G_FADD %2, %4227    $vgpr0 = COPY %5(s32)228    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0229...230 231---232name: test_add_mul_multiple_defs_z233body: |234  bb.1.entry:235    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3236 237    ; GFX9-LABEL: name: test_add_mul_multiple_defs_z238    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3239    ; GFX9-NEXT: {{  $}}240    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0241    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1242    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2243    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3244    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)245    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]246    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)247    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)248    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[FMUL]], [[UV1]]249    ; GFX9-NEXT: $vgpr0 = COPY [[FADD]](s32)250    ;251    ; GFX9-DENORM-LABEL: name: test_add_mul_multiple_defs_z252    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3253    ; GFX9-DENORM-NEXT: {{  $}}254    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0255    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1256    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2257    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3258    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)259    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]260    ; GFX9-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)261    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)262    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[FMUL]], [[UV1]]263    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)264    ;265    ; GFX10-LABEL: name: test_add_mul_multiple_defs_z266    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3267    ; GFX10-NEXT: {{  $}}268    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0269    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1270    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2271    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3272    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)273    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]274    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)275    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)276    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[FMUL]], [[UV1]]277    ; GFX10-NEXT: $vgpr0 = COPY [[FADD]](s32)278    ;279    ; GFX10-DENORM-LABEL: name: test_add_mul_multiple_defs_z280    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3281    ; GFX10-DENORM-NEXT: {{  $}}282    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0283    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1284    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2285    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3286    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)287    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]288    ; GFX10-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)289    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)290    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[FMUL]], [[UV1]]291    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)292    %0:_(s32) = COPY $vgpr0293    %1:_(s32) = COPY $vgpr1294    %4:_(s32) = COPY $vgpr2295    %5:_(s32) = COPY $vgpr3296    %2:_(p1) = G_MERGE_VALUES %4(s32), %5(s32)297    %6:_(s32) = G_FMUL %0, %1298    %7:_(<2 x s32>) = G_LOAD %2(p1) :: (load (<2 x s32>), addrspace 1)299    %12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %7(<2 x s32>)300    %8:_(s32) = COPY %13(s32)301    %10:_(s32) = G_FADD %6, %8302    $vgpr0 = COPY %10(s32)303...304 305---306name: test_add_mul_multiple_defs_z_contract307body: |308  bb.1.entry:309    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3310 311    ; GFX9-LABEL: name: test_add_mul_multiple_defs_z_contract312    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3313    ; GFX9-NEXT: {{  $}}314    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0315    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1316    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2317    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3318    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)319    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)320    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)321    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]322    ; GFX9-NEXT: $vgpr0 = COPY [[FMA]](s32)323    ;324    ; GFX9-DENORM-LABEL: name: test_add_mul_multiple_defs_z_contract325    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3326    ; GFX9-DENORM-NEXT: {{  $}}327    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0328    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1329    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2330    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3331    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)332    ; GFX9-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)333    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)334    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]335    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)336    ;337    ; GFX10-LABEL: name: test_add_mul_multiple_defs_z_contract338    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3339    ; GFX10-NEXT: {{  $}}340    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0341    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1342    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2343    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3344    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)345    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)346    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)347    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]348    ; GFX10-NEXT: $vgpr0 = COPY [[FMA]](s32)349    ;350    ; GFX10-DENORM-LABEL: name: test_add_mul_multiple_defs_z_contract351    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3352    ; GFX10-DENORM-NEXT: {{  $}}353    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0354    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1355    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2356    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3357    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)358    ; GFX10-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)359    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)360    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]361    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)362    %0:_(s32) = COPY $vgpr0363    %1:_(s32) = COPY $vgpr1364    %4:_(s32) = COPY $vgpr2365    %5:_(s32) = COPY $vgpr3366    %2:_(p1) = G_MERGE_VALUES %4(s32), %5(s32)367    %6:_(s32) = contract G_FMUL %0, %1368    %7:_(<2 x s32>) = G_LOAD %2(p1) :: (load (<2 x s32>), addrspace 1)369    %12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %7(<2 x s32>)370    %8:_(s32) = COPY %13(s32)371    %10:_(s32) = contract G_FADD %6, %8372    $vgpr0 = COPY %10(s32)373...374 375---376name: test_add_mul_rhs_multiple_defs_z377body: |378  bb.1.entry:379    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3380 381    ; GFX9-LABEL: name: test_add_mul_rhs_multiple_defs_z382    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3383    ; GFX9-NEXT: {{  $}}384    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0385    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1386    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2387    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3388    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)389    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]390    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)391    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)392    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[UV1]], [[FMUL]]393    ; GFX9-NEXT: $vgpr0 = COPY [[FADD]](s32)394    ;395    ; GFX9-DENORM-LABEL: name: test_add_mul_rhs_multiple_defs_z396    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3397    ; GFX9-DENORM-NEXT: {{  $}}398    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0399    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1400    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2401    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3402    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)403    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]404    ; GFX9-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)405    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)406    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[UV1]], [[FMUL]]407    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)408    ;409    ; GFX10-LABEL: name: test_add_mul_rhs_multiple_defs_z410    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3411    ; GFX10-NEXT: {{  $}}412    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0413    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1414    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2415    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3416    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)417    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]418    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)419    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)420    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[UV1]], [[FMUL]]421    ; GFX10-NEXT: $vgpr0 = COPY [[FADD]](s32)422    ;423    ; GFX10-DENORM-LABEL: name: test_add_mul_rhs_multiple_defs_z424    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3425    ; GFX10-DENORM-NEXT: {{  $}}426    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0427    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1428    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2429    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3430    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)431    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s32) = G_FMUL [[COPY]], [[COPY1]]432    ; GFX10-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)433    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)434    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s32) = G_FADD [[UV1]], [[FMUL]]435    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FADD]](s32)436    %0:_(s32) = COPY $vgpr0437    %1:_(s32) = COPY $vgpr1438    %4:_(s32) = COPY $vgpr2439    %5:_(s32) = COPY $vgpr3440    %2:_(p1) = G_MERGE_VALUES %4(s32), %5(s32)441    %6:_(s32) = G_FMUL %0, %1442    %7:_(<2 x s32>) = G_LOAD %2(p1) :: (load (<2 x s32>), addrspace 1)443    %12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %7(<2 x s32>)444    %8:_(s32) = COPY %13(s32)445    %10:_(s32) = G_FADD %8, %6446    $vgpr0 = COPY %10(s32)447...448 449---450name: test_add_mul_rhs_multiple_defs_z_contract451body: |452  bb.1.entry:453    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3454 455    ; GFX9-LABEL: name: test_add_mul_rhs_multiple_defs_z_contract456    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3457    ; GFX9-NEXT: {{  $}}458    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0459    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1460    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2461    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3462    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)463    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)464    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)465    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]466    ; GFX9-NEXT: $vgpr0 = COPY [[FMA]](s32)467    ;468    ; GFX9-DENORM-LABEL: name: test_add_mul_rhs_multiple_defs_z_contract469    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3470    ; GFX9-DENORM-NEXT: {{  $}}471    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0472    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1473    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2474    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3475    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)476    ; GFX9-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)477    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)478    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]479    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)480    ;481    ; GFX10-LABEL: name: test_add_mul_rhs_multiple_defs_z_contract482    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3483    ; GFX10-NEXT: {{  $}}484    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0485    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1486    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2487    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3488    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)489    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)490    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)491    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]492    ; GFX10-NEXT: $vgpr0 = COPY [[FMA]](s32)493    ;494    ; GFX10-DENORM-LABEL: name: test_add_mul_rhs_multiple_defs_z_contract495    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3496    ; GFX10-DENORM-NEXT: {{  $}}497    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0498    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1499    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2500    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3501    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(p1) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)502    ; GFX10-DENORM-NEXT: [[LOAD:%[0-9]+]]:_(<2 x s32>) = G_LOAD [[MV]](p1) :: (load (<2 x s32>), addrspace 1)503    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[LOAD]](<2 x s32>)504    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s32) = G_FMA [[COPY]], [[COPY1]], [[UV1]]505    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[FMA]](s32)506    %0:_(s32) = COPY $vgpr0507    %1:_(s32) = COPY $vgpr1508    %4:_(s32) = COPY $vgpr2509    %5:_(s32) = COPY $vgpr3510    %2:_(p1) = G_MERGE_VALUES %4(s32), %5(s32)511    %6:_(s32) = contract G_FMUL %0, %1512    %7:_(<2 x s32>) = G_LOAD %2(p1) :: (load (<2 x s32>), addrspace 1)513    %12:_(s32), %13:_(s32) = G_UNMERGE_VALUES %7(<2 x s32>)514    %8:_(s32) = COPY %13(s32)515    %10:_(s32) = contract G_FADD %8, %6516    $vgpr0 = COPY %10(s32)517...518 519---520name:            test_half_add_mul521body:             |522  bb.1.entry:523    liveins: $vgpr0, $vgpr1, $vgpr2524 525    ; GFX9-LABEL: name: test_half_add_mul526    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2527    ; GFX9-NEXT: {{  $}}528    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0529    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)530    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1531    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)532    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2533    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)534    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]535    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[FMUL]], [[TRUNC2]]536    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)537    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)538    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0539    ;540    ; GFX9-DENORM-LABEL: name: test_half_add_mul541    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2542    ; GFX9-DENORM-NEXT: {{  $}}543    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0544    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)545    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1546    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)547    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2548    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)549    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]550    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[FMUL]], [[TRUNC2]]551    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)552    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)553    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0554    ;555    ; GFX10-LABEL: name: test_half_add_mul556    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2557    ; GFX10-NEXT: {{  $}}558    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0559    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)560    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1561    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)562    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2563    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)564    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]565    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[FMUL]], [[TRUNC2]]566    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)567    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)568    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0569    ;570    ; GFX10-DENORM-LABEL: name: test_half_add_mul571    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2572    ; GFX10-DENORM-NEXT: {{  $}}573    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0574    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)575    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1576    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)577    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2578    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)579    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]580    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[FMUL]], [[TRUNC2]]581    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)582    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)583    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0584    %4:_(s32) = COPY $vgpr0585    %0:_(s16) = G_TRUNC %4(s32)586    %5:_(s32) = COPY $vgpr1587    %1:_(s16) = G_TRUNC %5(s32)588    %6:_(s32) = COPY $vgpr2589    %2:_(s16) = G_TRUNC %6(s32)590    %7:_(s16) = G_FMUL %0, %1591    %8:_(s16) = G_FADD %7, %2592    %10:_(s32) = G_ANYEXT %8(s16)593    $vgpr0 = COPY %10(s32)594    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0595...596 597---598name:            test_half_add_mul_contract599body:             |600  bb.1.entry:601    liveins: $vgpr0, $vgpr1, $vgpr2602 603    ; GFX9-LABEL: name: test_half_add_mul_contract604    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2605    ; GFX9-NEXT: {{  $}}606    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0607    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)608    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1609    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)610    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2611    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)612    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]613    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)614    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)615    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0616    ;617    ; GFX9-DENORM-LABEL: name: test_half_add_mul_contract618    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2619    ; GFX9-DENORM-NEXT: {{  $}}620    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0621    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)622    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1623    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)624    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2625    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)626    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]627    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)628    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)629    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0630    ;631    ; GFX10-LABEL: name: test_half_add_mul_contract632    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2633    ; GFX10-NEXT: {{  $}}634    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0635    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)636    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1637    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)638    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2639    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)640    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]641    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)642    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)643    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0644    ;645    ; GFX10-DENORM-LABEL: name: test_half_add_mul_contract646    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2647    ; GFX10-DENORM-NEXT: {{  $}}648    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0649    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)650    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1651    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)652    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2653    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)654    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]655    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)656    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)657    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0658    %4:_(s32) = COPY $vgpr0659    %0:_(s16) = G_TRUNC %4(s32)660    %5:_(s32) = COPY $vgpr1661    %1:_(s16) = G_TRUNC %5(s32)662    %6:_(s32) = COPY $vgpr2663    %2:_(s16) = G_TRUNC %6(s32)664    %7:_(s16) = contract G_FMUL %0, %1665    %8:_(s16) = contract G_FADD %7, %2666    %10:_(s32) = G_ANYEXT %8(s16)667    $vgpr0 = COPY %10(s32)668    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0669...670 671---672name:            test_half_add_mul_rhs673body:             |674  bb.1.entry:675    liveins: $vgpr0, $vgpr1, $vgpr2676 677    ; GFX9-LABEL: name: test_half_add_mul_rhs678    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2679    ; GFX9-NEXT: {{  $}}680    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0681    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)682    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1683    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)684    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2685    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)686    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]687    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[TRUNC2]], [[FMUL]]688    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)689    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)690    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0691    ;692    ; GFX9-DENORM-LABEL: name: test_half_add_mul_rhs693    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2694    ; GFX9-DENORM-NEXT: {{  $}}695    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0696    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)697    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1698    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)699    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2700    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)701    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]702    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[TRUNC2]], [[FMUL]]703    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)704    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)705    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0706    ;707    ; GFX10-LABEL: name: test_half_add_mul_rhs708    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2709    ; GFX10-NEXT: {{  $}}710    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0711    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)712    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1713    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)714    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2715    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)716    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]717    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[TRUNC2]], [[FMUL]]718    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)719    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)720    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0721    ;722    ; GFX10-DENORM-LABEL: name: test_half_add_mul_rhs723    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2724    ; GFX10-DENORM-NEXT: {{  $}}725    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0726    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)727    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1728    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)729    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2730    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)731    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s16) = G_FMUL [[TRUNC]], [[TRUNC1]]732    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s16) = G_FADD [[TRUNC2]], [[FMUL]]733    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FADD]](s16)734    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)735    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0736    %4:_(s32) = COPY $vgpr0737    %0:_(s16) = G_TRUNC %4(s32)738    %5:_(s32) = COPY $vgpr1739    %1:_(s16) = G_TRUNC %5(s32)740    %6:_(s32) = COPY $vgpr2741    %2:_(s16) = G_TRUNC %6(s32)742    %7:_(s16) = G_FMUL %0, %1743    %8:_(s16) = G_FADD %2, %7744    %10:_(s32) = G_ANYEXT %8(s16)745    $vgpr0 = COPY %10(s32)746    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0747...748 749---750name:            test_half_add_mul_rhs_contract751body:             |752  bb.1.entry:753    liveins: $vgpr0, $vgpr1, $vgpr2754 755    ; GFX9-LABEL: name: test_half_add_mul_rhs_contract756    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2757    ; GFX9-NEXT: {{  $}}758    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0759    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)760    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1761    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)762    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2763    ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)764    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]765    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)766    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)767    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0768    ;769    ; GFX9-DENORM-LABEL: name: test_half_add_mul_rhs_contract770    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2771    ; GFX9-DENORM-NEXT: {{  $}}772    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0773    ; GFX9-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)774    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1775    ; GFX9-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)776    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2777    ; GFX9-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)778    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]779    ; GFX9-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)780    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)781    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0782    ;783    ; GFX10-LABEL: name: test_half_add_mul_rhs_contract784    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2785    ; GFX10-NEXT: {{  $}}786    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0787    ; GFX10-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)788    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1789    ; GFX10-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)790    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2791    ; GFX10-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)792    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]793    ; GFX10-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)794    ; GFX10-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)795    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0796    ;797    ; GFX10-DENORM-LABEL: name: test_half_add_mul_rhs_contract798    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2799    ; GFX10-DENORM-NEXT: {{  $}}800    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0801    ; GFX10-DENORM-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)802    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1803    ; GFX10-DENORM-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)804    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2805    ; GFX10-DENORM-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[COPY2]](s32)806    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s16) = G_FMA [[TRUNC]], [[TRUNC1]], [[TRUNC2]]807    ; GFX10-DENORM-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FMA]](s16)808    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)809    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0810    %4:_(s32) = COPY $vgpr0811    %0:_(s16) = G_TRUNC %4(s32)812    %5:_(s32) = COPY $vgpr1813    %1:_(s16) = G_TRUNC %5(s32)814    %6:_(s32) = COPY $vgpr2815    %2:_(s16) = G_TRUNC %6(s32)816    %7:_(s16) = contract G_FMUL %0, %1817    %8:_(s16) = contract G_FADD %2, %7818    %10:_(s32) = G_ANYEXT %8(s16)819    $vgpr0 = COPY %10(s32)820    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0821...822 823---824name:            test_double_add_mul825body:             |826  bb.1.entry:827    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5828 829    ; GFX9-LABEL: name: test_double_add_mul830    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5831    ; GFX9-NEXT: {{  $}}832    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0833    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1834    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)835    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2836    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3837    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)838    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4839    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5840    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)841    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]842    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[MV2]]843    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)844    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)845    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)846    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1847    ;848    ; GFX9-DENORM-LABEL: name: test_double_add_mul849    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5850    ; GFX9-DENORM-NEXT: {{  $}}851    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0852    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1853    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)854    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2855    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3856    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)857    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4858    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5859    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)860    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]861    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[MV2]]862    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)863    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)864    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)865    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1866    ;867    ; GFX10-LABEL: name: test_double_add_mul868    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5869    ; GFX10-NEXT: {{  $}}870    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0871    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1872    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)873    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2874    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3875    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)876    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4877    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5878    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)879    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]880    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[MV2]]881    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)882    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)883    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)884    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1885    ;886    ; GFX10-DENORM-LABEL: name: test_double_add_mul887    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5888    ; GFX10-DENORM-NEXT: {{  $}}889    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0890    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1891    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)892    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2893    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3894    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)895    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4896    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5897    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)898    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]899    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[FMUL]], [[MV2]]900    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)901    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)902    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)903    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1904    %4:_(s32) = COPY $vgpr0905    %5:_(s32) = COPY $vgpr1906    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)907    %6:_(s32) = COPY $vgpr2908    %7:_(s32) = COPY $vgpr3909    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)910    %8:_(s32) = COPY $vgpr4911    %9:_(s32) = COPY $vgpr5912    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)913    %10:_(s64) = G_FMUL %0, %1914    %11:_(s64) = G_FADD %10, %2915    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)916    $vgpr0 = COPY %13(s32)917    $vgpr1 = COPY %14(s32)918    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1919...920 921---922name:            test_double_add_mul_contract923body:             |924  bb.1.entry:925    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5926 927    ; GFX9-LABEL: name: test_double_add_mul_contract928    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5929    ; GFX9-NEXT: {{  $}}930    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0931    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1932    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)933    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2934    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3935    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)936    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4937    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5938    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)939    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]940    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)941    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)942    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)943    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1944    ;945    ; GFX9-DENORM-LABEL: name: test_double_add_mul_contract946    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5947    ; GFX9-DENORM-NEXT: {{  $}}948    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0949    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1950    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)951    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2952    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3953    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)954    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4955    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5956    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)957    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]958    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)959    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)960    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)961    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1962    ;963    ; GFX10-LABEL: name: test_double_add_mul_contract964    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5965    ; GFX10-NEXT: {{  $}}966    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0967    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1968    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)969    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2970    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3971    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)972    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4973    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5974    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)975    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]976    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)977    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)978    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)979    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1980    ;981    ; GFX10-DENORM-LABEL: name: test_double_add_mul_contract982    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5983    ; GFX10-DENORM-NEXT: {{  $}}984    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0985    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1986    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)987    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr2988    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr3989    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)990    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr4991    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr5992    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)993    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]994    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)995    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)996    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)997    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1998    %4:_(s32) = COPY $vgpr0999    %5:_(s32) = COPY $vgpr11000    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)1001    %6:_(s32) = COPY $vgpr21002    %7:_(s32) = COPY $vgpr31003    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)1004    %8:_(s32) = COPY $vgpr41005    %9:_(s32) = COPY $vgpr51006    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)1007    %10:_(s64) = contract G_FMUL %0, %11008    %11:_(s64) = contract G_FADD %10, %21009    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)1010    $vgpr0 = COPY %13(s32)1011    $vgpr1 = COPY %14(s32)1012    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11013...1014 1015 1016---1017name:            test_double_add_mul_rhs1018body:             |1019  bb.1.entry:1020    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51021 1022    ; GFX9-LABEL: name: test_double_add_mul_rhs1023    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51024    ; GFX9-NEXT: {{  $}}1025    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01026    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11027    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1028    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21029    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31030    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1031    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41032    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51033    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1034    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]1035    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[MV2]], [[FMUL]]1036    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)1037    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1038    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1039    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11040    ;1041    ; GFX9-DENORM-LABEL: name: test_double_add_mul_rhs1042    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51043    ; GFX9-DENORM-NEXT: {{  $}}1044    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01045    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11046    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1047    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21048    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31049    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1050    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41051    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51052    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1053    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]1054    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[MV2]], [[FMUL]]1055    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)1056    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1057    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1058    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11059    ;1060    ; GFX10-LABEL: name: test_double_add_mul_rhs1061    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51062    ; GFX10-NEXT: {{  $}}1063    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01064    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11065    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1066    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21067    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31068    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1069    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41070    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51071    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1072    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]1073    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[MV2]], [[FMUL]]1074    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)1075    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1076    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1077    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11078    ;1079    ; GFX10-DENORM-LABEL: name: test_double_add_mul_rhs1080    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51081    ; GFX10-DENORM-NEXT: {{  $}}1082    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01083    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11084    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1085    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21086    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31087    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1088    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41089    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51090    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1091    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(s64) = G_FMUL [[MV]], [[MV1]]1092    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(s64) = G_FADD [[MV2]], [[FMUL]]1093    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](s64)1094    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1095    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1096    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11097    %4:_(s32) = COPY $vgpr01098    %5:_(s32) = COPY $vgpr11099    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)1100    %6:_(s32) = COPY $vgpr21101    %7:_(s32) = COPY $vgpr31102    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)1103    %8:_(s32) = COPY $vgpr41104    %9:_(s32) = COPY $vgpr51105    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)1106    %10:_(s64) = G_FMUL %0, %11107    %11:_(s64) = G_FADD %2, %101108    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)1109    $vgpr0 = COPY %13(s32)1110    $vgpr1 = COPY %14(s32)1111    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11112...1113 1114---1115name:            test_double_add_mul_rhs_contract1116body:             |1117  bb.1.entry:1118    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51119 1120    ; GFX9-LABEL: name: test_double_add_mul_rhs_contract1121    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51122    ; GFX9-NEXT: {{  $}}1123    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01124    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11125    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1126    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21127    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31128    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1129    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41130    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51131    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1132    ; GFX9-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]1133    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)1134    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1135    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1136    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11137    ;1138    ; GFX9-DENORM-LABEL: name: test_double_add_mul_rhs_contract1139    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51140    ; GFX9-DENORM-NEXT: {{  $}}1141    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01142    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11143    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1144    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21145    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31146    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1147    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41148    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51149    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1150    ; GFX9-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]1151    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)1152    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1153    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1154    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11155    ;1156    ; GFX10-LABEL: name: test_double_add_mul_rhs_contract1157    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51158    ; GFX10-NEXT: {{  $}}1159    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01160    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11161    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1162    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21163    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31164    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1165    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41166    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51167    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1168    ; GFX10-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]1169    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)1170    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1171    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1172    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11173    ;1174    ; GFX10-DENORM-LABEL: name: test_double_add_mul_rhs_contract1175    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51176    ; GFX10-DENORM-NEXT: {{  $}}1177    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01178    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11179    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)1180    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21181    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31182    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)1183    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41184    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51185    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)1186    ; GFX10-DENORM-NEXT: [[FMA:%[0-9]+]]:_(s64) = G_FMA [[MV]], [[MV1]], [[MV2]]1187    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FMA]](s64)1188    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1189    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1190    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11191    %4:_(s32) = COPY $vgpr01192    %5:_(s32) = COPY $vgpr11193    %0:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)1194    %6:_(s32) = COPY $vgpr21195    %7:_(s32) = COPY $vgpr31196    %1:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)1197    %8:_(s32) = COPY $vgpr41198    %9:_(s32) = COPY $vgpr51199    %2:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)1200    %10:_(s64) = contract G_FMUL %0, %11201    %11:_(s64) = contract G_FADD %2, %101202    %13:_(s32), %14:_(s32) = G_UNMERGE_VALUES %11(s64)1203    $vgpr0 = COPY %13(s32)1204    $vgpr1 = COPY %14(s32)1205    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11206...1207 1208---1209name:            test_4xfloat_add_mul1210body:             |1211  bb.1.entry:1212    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101213 1214    ; GFX9-LABEL: name: test_4xfloat_add_mul1215    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101216    ; GFX9-NEXT: {{  $}}1217    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01218    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11219    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21220    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31221    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1222    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41223    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51224    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61225    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71226    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1227    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81228    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91229    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101230    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111231    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1232    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1233    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]1234    ; 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>)1235    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1236    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1237    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1238    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)1239    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31240    ;1241    ; GFX9-DENORM-LABEL: name: test_4xfloat_add_mul1242    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101243    ; GFX9-DENORM-NEXT: {{  $}}1244    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01245    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11246    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21247    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31248    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1249    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41250    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51251    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61252    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71253    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1254    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81255    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91256    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101257    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111258    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1259    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1260    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]1261    ; 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>)1262    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1263    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1264    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1265    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1266    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31267    ;1268    ; GFX10-LABEL: name: test_4xfloat_add_mul1269    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101270    ; GFX10-NEXT: {{  $}}1271    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01272    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11273    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21274    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31275    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1276    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41277    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51278    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61279    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71280    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1281    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81282    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91283    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101284    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111285    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1286    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1287    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]1288    ; 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>)1289    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1290    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1291    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1292    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)1293    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31294    ;1295    ; GFX10-DENORM-LABEL: name: test_4xfloat_add_mul1296    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101297    ; GFX10-DENORM-NEXT: {{  $}}1298    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01299    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11300    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21301    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31302    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1303    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41304    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51305    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61306    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71307    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1308    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81309    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91310    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101311    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111312    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1313    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1314    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]1315    ; 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>)1316    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1317    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1318    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1319    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1320    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31321    %4:_(s32) = COPY $vgpr01322    %5:_(s32) = COPY $vgpr11323    %6:_(s32) = COPY $vgpr21324    %7:_(s32) = COPY $vgpr31325    %0:_(<4 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32), %7(s32)1326    %8:_(s32) = COPY $vgpr41327    %9:_(s32) = COPY $vgpr51328    %10:_(s32) = COPY $vgpr61329    %11:_(s32) = COPY $vgpr71330    %1:_(<4 x s32>) = G_BUILD_VECTOR %8(s32), %9(s32), %10(s32), %11(s32)1331    %12:_(s32) = COPY $vgpr81332    %13:_(s32) = COPY $vgpr91333    %14:_(s32) = COPY $vgpr101334    %15:_(s32) = COPY $vgpr111335    %2:_(<4 x s32>) = G_BUILD_VECTOR %12(s32), %13(s32), %14(s32), %15(s32)1336    %16:_(<4 x s32>) = G_FMUL %0, %11337    %17:_(<4 x s32>) = G_FADD %16, %21338    %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32) = G_UNMERGE_VALUES %17(<4 x s32>)1339    $vgpr0 = COPY %19(s32)1340    $vgpr1 = COPY %20(s32)1341    $vgpr2 = COPY %21(s32)1342    $vgpr3 = COPY %22(s32)1343    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31344...1345 1346---1347name:            test_4xfloat_add_mul_contract1348body:             |1349  bb.1.entry:1350    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101351 1352    ; GFX9-LABEL: name: test_4xfloat_add_mul_contract1353    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101354    ; GFX9-NEXT: {{  $}}1355    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01356    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11357    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21358    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31359    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1360    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41361    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51362    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61363    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71364    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1365    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81366    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91367    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101368    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111369    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1370    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1371    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]1372    ; 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>)1373    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1374    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1375    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1376    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)1377    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31378    ;1379    ; GFX9-DENORM-LABEL: name: test_4xfloat_add_mul_contract1380    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101381    ; GFX9-DENORM-NEXT: {{  $}}1382    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01383    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11384    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21385    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31386    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1387    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41388    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51389    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61390    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71391    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1392    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81393    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91394    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101395    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111396    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1397    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1398    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]1399    ; 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>)1400    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1401    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1402    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1403    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1404    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31405    ;1406    ; GFX10-LABEL: name: test_4xfloat_add_mul_contract1407    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101408    ; GFX10-NEXT: {{  $}}1409    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01410    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11411    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21412    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31413    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1414    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41415    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51416    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61417    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71418    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1419    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81420    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91421    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101422    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111423    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1424    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1425    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]1426    ; 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>)1427    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1428    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1429    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1430    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)1431    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31432    ;1433    ; GFX10-DENORM-LABEL: name: test_4xfloat_add_mul_contract1434    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr101435    ; GFX10-DENORM-NEXT: {{  $}}1436    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01437    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11438    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21439    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31440    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32)1441    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41442    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51443    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61444    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71445    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)1446    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81447    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr91448    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr101449    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr111450    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)1451    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1452    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s32>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]1453    ; 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>)1454    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1455    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1456    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1457    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)1458    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31459    %4:_(s32) = COPY $vgpr01460    %5:_(s32) = COPY $vgpr11461    %6:_(s32) = COPY $vgpr21462    %7:_(s32) = COPY $vgpr31463    %0:_(<4 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32), %7(s32)1464    %8:_(s32) = COPY $vgpr41465    %9:_(s32) = COPY $vgpr51466    %10:_(s32) = COPY $vgpr61467    %11:_(s32) = COPY $vgpr71468    %1:_(<4 x s32>) = G_BUILD_VECTOR %8(s32), %9(s32), %10(s32), %11(s32)1469    %12:_(s32) = COPY $vgpr81470    %13:_(s32) = COPY $vgpr91471    %14:_(s32) = COPY $vgpr101472    %15:_(s32) = COPY $vgpr111473    %2:_(<4 x s32>) = G_BUILD_VECTOR %12(s32), %13(s32), %14(s32), %15(s32)1474    %16:_(<4 x s32>) = contract G_FMUL %0, %11475    %17:_(<4 x s32>) = contract G_FADD %16, %21476    %19:_(s32), %20:_(s32), %21:_(s32), %22:_(s32) = G_UNMERGE_VALUES %17(<4 x s32>)1477    $vgpr0 = COPY %19(s32)1478    $vgpr1 = COPY %20(s32)1479    $vgpr2 = COPY %21(s32)1480    $vgpr3 = COPY %22(s32)1481    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr31482...1483 1484---1485name:            test_3xfloat_add_mul_rhs1486body:             |1487  bb.1.entry:1488    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81489 1490    ; GFX9-LABEL: name: test_3xfloat_add_mul_rhs1491    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81492    ; GFX9-NEXT: {{  $}}1493    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01494    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11495    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21496    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1497    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31498    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41499    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51500    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1501    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61502    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71503    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81504    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1505    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1506    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]1507    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1508    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1509    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1510    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1511    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21512    ;1513    ; GFX9-DENORM-LABEL: name: test_3xfloat_add_mul_rhs1514    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81515    ; GFX9-DENORM-NEXT: {{  $}}1516    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01517    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11518    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21519    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1520    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31521    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41522    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51523    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1524    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61525    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71526    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81527    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1528    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1529    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]1530    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1531    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1532    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1533    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1534    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21535    ;1536    ; GFX10-LABEL: name: test_3xfloat_add_mul_rhs1537    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81538    ; GFX10-NEXT: {{  $}}1539    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01540    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11541    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21542    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1543    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31544    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41545    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51546    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1547    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61548    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71549    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81550    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1551    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1552    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]1553    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1554    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1555    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1556    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1557    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21558    ;1559    ; GFX10-DENORM-LABEL: name: test_3xfloat_add_mul_rhs1560    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81561    ; GFX10-DENORM-NEXT: {{  $}}1562    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01563    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11564    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21565    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1566    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31567    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41568    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51569    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1570    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61571    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71572    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81573    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1574    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1575    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]1576    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1577    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1578    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1579    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1580    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21581    %4:_(s32) = COPY $vgpr01582    %5:_(s32) = COPY $vgpr11583    %6:_(s32) = COPY $vgpr21584    %0:_(<3 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32)1585    %7:_(s32) = COPY $vgpr31586    %8:_(s32) = COPY $vgpr41587    %9:_(s32) = COPY $vgpr51588    %1:_(<3 x s32>) = G_BUILD_VECTOR %7(s32), %8(s32), %9(s32)1589    %10:_(s32) = COPY $vgpr61590    %11:_(s32) = COPY $vgpr71591    %12:_(s32) = COPY $vgpr81592    %2:_(<3 x s32>) = G_BUILD_VECTOR %10(s32), %11(s32), %12(s32)1593    %13:_(<3 x s32>) = G_FMUL %0, %11594    %14:_(<3 x s32>) = G_FADD %2, %131595    %16:_(s32), %17:_(s32), %18:_(s32) = G_UNMERGE_VALUES %14(<3 x s32>)1596    $vgpr0 = COPY %16(s32)1597    $vgpr1 = COPY %17(s32)1598    $vgpr2 = COPY %18(s32)1599    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21600...1601 1602---1603name:            test_3xfloat_add_mul_rhs_contract1604body:             |1605  bb.1.entry:1606    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81607 1608    ; GFX9-LABEL: name: test_3xfloat_add_mul_rhs_contract1609    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81610    ; GFX9-NEXT: {{  $}}1611    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01612    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11613    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21614    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1615    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31616    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41617    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51618    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1619    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61620    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71621    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81622    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1623    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1624    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]1625    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1626    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)1627    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)1628    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)1629    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21630    ;1631    ; GFX9-DENORM-LABEL: name: test_3xfloat_add_mul_rhs_contract1632    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81633    ; GFX9-DENORM-NEXT: {{  $}}1634    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01635    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11636    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21637    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1638    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31639    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41640    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51641    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1642    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61643    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71644    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81645    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1646    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1647    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]1648    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1649    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1650    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1651    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1652    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21653    ;1654    ; GFX10-LABEL: name: test_3xfloat_add_mul_rhs_contract1655    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81656    ; GFX10-NEXT: {{  $}}1657    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01658    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11659    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21660    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1661    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31662    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41663    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51664    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1665    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61666    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71667    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81668    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1669    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1670    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]1671    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1672    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)1673    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)1674    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)1675    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21676    ;1677    ; GFX10-DENORM-LABEL: name: test_3xfloat_add_mul_rhs_contract1678    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr81679    ; GFX10-DENORM-NEXT: {{  $}}1680    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01681    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11682    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr21683    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32)1684    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr31685    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr41686    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr51687    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32)1688    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr61689    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr71690    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr81691    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[COPY6]](s32), [[COPY7]](s32), [[COPY8]](s32)1692    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s32>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]1693    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s32>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]1694    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[FADD]](<3 x s32>)1695    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)1696    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)1697    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)1698    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21699    %4:_(s32) = COPY $vgpr01700    %5:_(s32) = COPY $vgpr11701    %6:_(s32) = COPY $vgpr21702    %0:_(<3 x s32>) = G_BUILD_VECTOR %4(s32), %5(s32), %6(s32)1703    %7:_(s32) = COPY $vgpr31704    %8:_(s32) = COPY $vgpr41705    %9:_(s32) = COPY $vgpr51706    %1:_(<3 x s32>) = G_BUILD_VECTOR %7(s32), %8(s32), %9(s32)1707    %10:_(s32) = COPY $vgpr61708    %11:_(s32) = COPY $vgpr71709    %12:_(s32) = COPY $vgpr81710    %2:_(<3 x s32>) = G_BUILD_VECTOR %10(s32), %11(s32), %12(s32)1711    %13:_(<3 x s32>) = contract G_FMUL %0, %11712    %14:_(<3 x s32>) = contract G_FADD %2, %131713    %16:_(s32), %17:_(s32), %18:_(s32) = G_UNMERGE_VALUES %14(<3 x s32>)1714    $vgpr0 = COPY %16(s32)1715    $vgpr1 = COPY %17(s32)1716    $vgpr2 = COPY %18(s32)1717    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr21718...1719 1720---1721name:            test_4xhalf_add_mul1722body:             |1723  bb.1.entry:1724    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51725 1726    ; GFX9-LABEL: name: test_4xhalf_add_mul1727    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51728    ; GFX9-NEXT: {{  $}}1729    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01730    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11731    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1732    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21733    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31734    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1735    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41736    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51737    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1738    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1739    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1740    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1741    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1742    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1743    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11744    ;1745    ; GFX9-DENORM-LABEL: name: test_4xhalf_add_mul1746    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51747    ; GFX9-DENORM-NEXT: {{  $}}1748    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01749    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11750    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1751    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21752    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31753    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1754    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41755    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51756    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1757    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1758    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1759    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1760    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1761    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1762    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11763    ;1764    ; GFX10-LABEL: name: test_4xhalf_add_mul1765    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51766    ; GFX10-NEXT: {{  $}}1767    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01768    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11769    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1770    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21771    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31772    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1773    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41774    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51775    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1776    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1777    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1778    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1779    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1780    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1781    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11782    ;1783    ; GFX10-DENORM-LABEL: name: test_4xhalf_add_mul1784    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51785    ; GFX10-DENORM-NEXT: {{  $}}1786    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01787    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11788    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1789    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21790    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31791    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1792    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41793    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51794    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1795    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1796    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1797    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1798    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1799    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1800    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11801    %4:_(<2 x s16>) = COPY $vgpr01802    %5:_(<2 x s16>) = COPY $vgpr11803    %0:_(<4 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>)1804    %6:_(<2 x s16>) = COPY $vgpr21805    %7:_(<2 x s16>) = COPY $vgpr31806    %1:_(<4 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>)1807    %8:_(<2 x s16>) = COPY $vgpr41808    %9:_(<2 x s16>) = COPY $vgpr51809    %2:_(<4 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>)1810    %10:_(<4 x s16>) = G_FMUL %0, %11811    %11:_(<4 x s16>) = G_FADD %10, %21812    %13:_(<2 x s16>), %14:_(<2 x s16>) = G_UNMERGE_VALUES %11(<4 x s16>)1813    $vgpr0 = COPY %13(<2 x s16>)1814    $vgpr1 = COPY %14(<2 x s16>)1815    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11816...1817 1818---1819name:            test_4xhalf_add_mul_contract1820body:             |1821  bb.1.entry:1822    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51823 1824    ; GFX9-LABEL: name: test_4xhalf_add_mul_contract1825    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51826    ; GFX9-NEXT: {{  $}}1827    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01828    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11829    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1830    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21831    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31832    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1833    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41834    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51835    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1836    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = contract G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1837    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = contract G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1838    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1839    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1840    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1841    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11842    ;1843    ; GFX9-DENORM-LABEL: name: test_4xhalf_add_mul_contract1844    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51845    ; GFX9-DENORM-NEXT: {{  $}}1846    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01847    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11848    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1849    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21850    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31851    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1852    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41853    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51854    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1855    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = contract G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1856    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = contract G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1857    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1858    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1859    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1860    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11861    ;1862    ; GFX10-LABEL: name: test_4xhalf_add_mul_contract1863    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51864    ; GFX10-NEXT: {{  $}}1865    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01866    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11867    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1868    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21869    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31870    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1871    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41872    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51873    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1874    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = contract G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1875    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = contract G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1876    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1877    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1878    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1879    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11880    ;1881    ; GFX10-DENORM-LABEL: name: test_4xhalf_add_mul_contract1882    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51883    ; GFX10-DENORM-NEXT: {{  $}}1884    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01885    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11886    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>)1887    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21888    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31889    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>)1890    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41891    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51892    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>)1893    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s16>) = contract G_FMUL [[CONCAT_VECTORS]], [[CONCAT_VECTORS1]]1894    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s16>) = contract G_FADD [[FMUL]], [[CONCAT_VECTORS2]]1895    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[FADD]](<4 x s16>)1896    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](<2 x s16>)1897    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](<2 x s16>)1898    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11899    %4:_(<2 x s16>) = COPY $vgpr01900    %5:_(<2 x s16>) = COPY $vgpr11901    %0:_(<4 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>)1902    %6:_(<2 x s16>) = COPY $vgpr21903    %7:_(<2 x s16>) = COPY $vgpr31904    %1:_(<4 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>)1905    %8:_(<2 x s16>) = COPY $vgpr41906    %9:_(<2 x s16>) = COPY $vgpr51907    %2:_(<4 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>)1908    %10:_(<4 x s16>) = contract G_FMUL %0, %11909    %11:_(<4 x s16>) = contract G_FADD %10, %21910    %13:_(<2 x s16>), %14:_(<2 x s16>) = G_UNMERGE_VALUES %11(<4 x s16>)1911    $vgpr0 = COPY %13(<2 x s16>)1912    $vgpr1 = COPY %14(<2 x s16>)1913    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11914...1915 1916 1917---1918name:            test_3xhalf_add_mul_rhs1919body:             |1920  bb.1.entry:1921    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51922 1923    ; GFX9-LABEL: name: test_3xhalf_add_mul_rhs1924    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51925    ; GFX9-NEXT: {{  $}}1926    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01927    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11928    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1929    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1930    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1931    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21932    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31933    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1934    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1935    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41936    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51937    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1938    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1939    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = G_FMUL [[UV]], [[UV2]]1940    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = G_FADD [[UV4]], [[FMUL]]1941    ; GFX9-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1942    ; GFX9-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1943    ; 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>)1944    ; GFX9-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1945    ; GFX9-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1946    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11947    ;1948    ; GFX9-DENORM-LABEL: name: test_3xhalf_add_mul_rhs1949    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51950    ; GFX9-DENORM-NEXT: {{  $}}1951    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01952    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11953    ; GFX9-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1954    ; 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>)1955    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1956    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21957    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31958    ; 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>)1959    ; GFX9-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1960    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41961    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51962    ; 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>)1963    ; GFX9-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1964    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = G_FMUL [[UV]], [[UV2]]1965    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = G_FADD [[UV4]], [[FMUL]]1966    ; GFX9-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1967    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1968    ; 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>)1969    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1970    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1971    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11972    ;1973    ; GFX10-LABEL: name: test_3xhalf_add_mul_rhs1974    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr51975    ; GFX10-NEXT: {{  $}}1976    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr01977    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr11978    ; GFX10-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF1979    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)1980    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)1981    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr21982    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr31983    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)1984    ; GFX10-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)1985    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr41986    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr51987    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)1988    ; GFX10-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)1989    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = G_FMUL [[UV]], [[UV2]]1990    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = G_FADD [[UV4]], [[FMUL]]1991    ; GFX10-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF1992    ; GFX10-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)1993    ; 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>)1994    ; GFX10-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)1995    ; GFX10-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)1996    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr11997    ;1998    ; GFX10-DENORM-LABEL: name: test_3xhalf_add_mul_rhs1999    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52000    ; GFX10-DENORM-NEXT: {{  $}}2001    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr02002    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12003    ; GFX10-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF2004    ; 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>)2005    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)2006    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22007    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr32008    ; 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>)2009    ; GFX10-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)2010    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr42011    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr52012    ; 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>)2013    ; GFX10-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)2014    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = G_FMUL [[UV]], [[UV2]]2015    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = G_FADD [[UV4]], [[FMUL]]2016    ; GFX10-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF2017    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)2018    ; 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>)2019    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)2020    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)2021    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12022    %4:_(<2 x s16>) = COPY $vgpr02023    %5:_(<2 x s16>) = COPY $vgpr12024    %10:_(<2 x s16>) = G_IMPLICIT_DEF2025    %11:_(<6 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>), %10(<2 x s16>)2026    %0:_(<3 x s16>), %12:_(<3 x s16>) = G_UNMERGE_VALUES %11(<6 x s16>)2027    %6:_(<2 x s16>) = COPY $vgpr22028    %7:_(<2 x s16>) = COPY $vgpr32029    %13:_(<6 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>), %10(<2 x s16>)2030    %1:_(<3 x s16>), %14:_(<3 x s16>) = G_UNMERGE_VALUES %13(<6 x s16>)2031    %8:_(<2 x s16>) = COPY $vgpr42032    %9:_(<2 x s16>) = COPY $vgpr52033    %15:_(<6 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>), %10(<2 x s16>)2034    %2:_(<3 x s16>), %16:_(<3 x s16>) = G_UNMERGE_VALUES %15(<6 x s16>)2035    %17:_(<3 x s16>) = G_FMUL %0, %12036    %18:_(<3 x s16>) = G_FADD %2, %172037    %22:_(<3 x s16>) = G_IMPLICIT_DEF2038    %23:_(<6 x s16>) = G_CONCAT_VECTORS %18(<3 x s16>), %22(<3 x s16>)2039    %20:_(<2 x s16>), %21:_(<2 x s16>), %24:_(<2 x s16>) = G_UNMERGE_VALUES %23(<6 x s16>)2040    $vgpr0 = COPY %20(<2 x s16>)2041    $vgpr1 = COPY %21(<2 x s16>)2042    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12043...2044 2045---2046name:            test_3xhalf_add_mul_rhs_contract2047body:             |2048  bb.1.entry:2049    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52050 2051    ; GFX9-LABEL: name: test_3xhalf_add_mul_rhs_contract2052    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52053    ; GFX9-NEXT: {{  $}}2054    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr02055    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12056    ; GFX9-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF2057    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)2058    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)2059    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22060    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr32061    ; GFX9-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)2062    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)2063    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr42064    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr52065    ; GFX9-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)2066    ; GFX9-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)2067    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = contract G_FMUL [[UV]], [[UV2]]2068    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = contract G_FADD [[UV4]], [[FMUL]]2069    ; GFX9-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF2070    ; GFX9-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)2071    ; 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>)2072    ; GFX9-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)2073    ; GFX9-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)2074    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12075    ;2076    ; GFX9-DENORM-LABEL: name: test_3xhalf_add_mul_rhs_contract2077    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52078    ; GFX9-DENORM-NEXT: {{  $}}2079    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr02080    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12081    ; GFX9-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF2082    ; 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>)2083    ; GFX9-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)2084    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22085    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr32086    ; 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>)2087    ; GFX9-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)2088    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr42089    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr52090    ; 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>)2091    ; GFX9-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)2092    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = contract G_FMUL [[UV]], [[UV2]]2093    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = contract G_FADD [[UV4]], [[FMUL]]2094    ; GFX9-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF2095    ; GFX9-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)2096    ; 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>)2097    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)2098    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)2099    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12100    ;2101    ; GFX10-LABEL: name: test_3xhalf_add_mul_rhs_contract2102    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52103    ; GFX10-NEXT: {{  $}}2104    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr02105    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12106    ; GFX10-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF2107    ; GFX10-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY]](<2 x s16>), [[COPY1]](<2 x s16>), [[DEF]](<2 x s16>)2108    ; GFX10-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)2109    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22110    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr32111    ; GFX10-NEXT: [[CONCAT_VECTORS1:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY2]](<2 x s16>), [[COPY3]](<2 x s16>), [[DEF]](<2 x s16>)2112    ; GFX10-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)2113    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr42114    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr52115    ; GFX10-NEXT: [[CONCAT_VECTORS2:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[COPY4]](<2 x s16>), [[COPY5]](<2 x s16>), [[DEF]](<2 x s16>)2116    ; GFX10-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)2117    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = contract G_FMUL [[UV]], [[UV2]]2118    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = contract G_FADD [[UV4]], [[FMUL]]2119    ; GFX10-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF2120    ; GFX10-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)2121    ; 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>)2122    ; GFX10-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)2123    ; GFX10-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)2124    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12125    ;2126    ; GFX10-DENORM-LABEL: name: test_3xhalf_add_mul_rhs_contract2127    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr52128    ; GFX10-DENORM-NEXT: {{  $}}2129    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr02130    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr12131    ; GFX10-DENORM-NEXT: [[DEF:%[0-9]+]]:_(<2 x s16>) = G_IMPLICIT_DEF2132    ; 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>)2133    ; GFX10-DENORM-NEXT: [[UV:%[0-9]+]]:_(<3 x s16>), [[UV1:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS]](<6 x s16>)2134    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr22135    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr32136    ; 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>)2137    ; GFX10-DENORM-NEXT: [[UV2:%[0-9]+]]:_(<3 x s16>), [[UV3:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS1]](<6 x s16>)2138    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr42139    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr52140    ; 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>)2141    ; GFX10-DENORM-NEXT: [[UV4:%[0-9]+]]:_(<3 x s16>), [[UV5:%[0-9]+]]:_(<3 x s16>) = G_UNMERGE_VALUES [[CONCAT_VECTORS2]](<6 x s16>)2142    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s16>) = contract G_FMUL [[UV]], [[UV2]]2143    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s16>) = contract G_FADD [[UV4]], [[FMUL]]2144    ; GFX10-DENORM-NEXT: [[DEF1:%[0-9]+]]:_(<3 x s16>) = G_IMPLICIT_DEF2145    ; GFX10-DENORM-NEXT: [[CONCAT_VECTORS3:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[FADD]](<3 x s16>), [[DEF1]](<3 x s16>)2146    ; 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>)2147    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV6]](<2 x s16>)2148    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV7]](<2 x s16>)2149    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12150    %4:_(<2 x s16>) = COPY $vgpr02151    %5:_(<2 x s16>) = COPY $vgpr12152    %10:_(<2 x s16>) = G_IMPLICIT_DEF2153    %11:_(<6 x s16>) = G_CONCAT_VECTORS %4(<2 x s16>), %5(<2 x s16>), %10(<2 x s16>)2154    %0:_(<3 x s16>), %12:_(<3 x s16>) = G_UNMERGE_VALUES %11(<6 x s16>)2155    %6:_(<2 x s16>) = COPY $vgpr22156    %7:_(<2 x s16>) = COPY $vgpr32157    %13:_(<6 x s16>) = G_CONCAT_VECTORS %6(<2 x s16>), %7(<2 x s16>), %10(<2 x s16>)2158    %1:_(<3 x s16>), %14:_(<3 x s16>) = G_UNMERGE_VALUES %13(<6 x s16>)2159    %8:_(<2 x s16>) = COPY $vgpr42160    %9:_(<2 x s16>) = COPY $vgpr52161    %15:_(<6 x s16>) = G_CONCAT_VECTORS %8(<2 x s16>), %9(<2 x s16>), %10(<2 x s16>)2162    %2:_(<3 x s16>), %16:_(<3 x s16>) = G_UNMERGE_VALUES %15(<6 x s16>)2163    %17:_(<3 x s16>) = contract G_FMUL %0, %12164    %18:_(<3 x s16>) = contract G_FADD %2, %172165    %22:_(<3 x s16>) = G_IMPLICIT_DEF2166    %23:_(<6 x s16>) = G_CONCAT_VECTORS %18(<3 x s16>), %22(<3 x s16>)2167    %20:_(<2 x s16>), %21:_(<2 x s16>), %24:_(<2 x s16>) = G_UNMERGE_VALUES %23(<6 x s16>)2168    $vgpr0 = COPY %20(<2 x s16>)2169    $vgpr1 = COPY %21(<2 x s16>)2170    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr12171...2172 2173---2174name:            test_4xdouble_add_mul2175body:             |2176  bb.1.entry:2177    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232178 2179    ; GFX9-LABEL: name: test_4xdouble_add_mul2180    ; 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, $vgpr232181    ; GFX9-NEXT: {{  $}}2182    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02183    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12184    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22185    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32186    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42187    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52188    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62189    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72190    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2191    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2192    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2193    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2194    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2195    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82196    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92197    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102198    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112199    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122200    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132201    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142202    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152203    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2204    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2205    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2206    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2207    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2208    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162209    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172210    ; GFX9-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182211    ; GFX9-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192212    ; GFX9-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202213    ; GFX9-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212214    ; GFX9-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222215    ; GFX9-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232216    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2217    ; GFX9-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2218    ; GFX9-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2219    ; GFX9-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2220    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2221    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2222    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]2223    ; 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>)2224    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2225    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2226    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2227    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2228    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2229    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2230    ; GFX9-NEXT: $vgpr6 = COPY [[UV6]](s32)2231    ; GFX9-NEXT: $vgpr7 = COPY [[UV7]](s32)2232    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72233    ;2234    ; GFX9-DENORM-LABEL: name: test_4xdouble_add_mul2235    ; 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, $vgpr232236    ; GFX9-DENORM-NEXT: {{  $}}2237    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02238    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12239    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22240    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32241    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42242    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52243    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62244    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72245    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2246    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2247    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2248    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2249    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2250    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82251    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92252    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102253    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112254    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122255    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132256    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142257    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152258    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2259    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2260    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2261    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2262    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2263    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162264    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172265    ; GFX9-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182266    ; GFX9-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192267    ; GFX9-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202268    ; GFX9-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212269    ; GFX9-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222270    ; GFX9-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232271    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2272    ; GFX9-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2273    ; GFX9-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2274    ; GFX9-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2275    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2276    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2277    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]2278    ; 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>)2279    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2280    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2281    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2282    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2283    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2284    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2285    ; GFX9-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2286    ; GFX9-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2287    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72288    ;2289    ; GFX10-LABEL: name: test_4xdouble_add_mul2290    ; 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, $vgpr232291    ; GFX10-NEXT: {{  $}}2292    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02293    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12294    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22295    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32296    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42297    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52298    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62299    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72300    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2301    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2302    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2303    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2304    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2305    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82306    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92307    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102308    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112309    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122310    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132311    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142312    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152313    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2314    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2315    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2316    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2317    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2318    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162319    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172320    ; GFX10-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182321    ; GFX10-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192322    ; GFX10-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202323    ; GFX10-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212324    ; GFX10-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222325    ; GFX10-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232326    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2327    ; GFX10-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2328    ; GFX10-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2329    ; GFX10-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2330    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2331    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2332    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]2333    ; 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>)2334    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2335    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2336    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2337    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2338    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2339    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2340    ; GFX10-NEXT: $vgpr6 = COPY [[UV6]](s32)2341    ; GFX10-NEXT: $vgpr7 = COPY [[UV7]](s32)2342    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72343    ;2344    ; GFX10-DENORM-LABEL: name: test_4xdouble_add_mul2345    ; 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, $vgpr232346    ; GFX10-DENORM-NEXT: {{  $}}2347    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02348    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12349    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22350    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32351    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42352    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52353    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62354    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72355    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2356    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2357    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2358    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2359    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2360    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82361    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92362    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102363    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112364    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122365    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132366    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142367    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152368    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2369    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2370    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2371    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2372    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2373    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162374    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172375    ; GFX10-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182376    ; GFX10-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192377    ; GFX10-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202378    ; GFX10-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212379    ; GFX10-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222380    ; GFX10-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232381    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2382    ; GFX10-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2383    ; GFX10-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2384    ; GFX10-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2385    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2386    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2387    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = G_FADD [[FMUL]], [[BUILD_VECTOR2]]2388    ; 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>)2389    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2390    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2391    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2392    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2393    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2394    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2395    ; GFX10-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2396    ; GFX10-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2397    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72398    %4:_(s32) = COPY $vgpr02399    %5:_(s32) = COPY $vgpr12400    %6:_(s32) = COPY $vgpr22401    %7:_(s32) = COPY $vgpr32402    %8:_(s32) = COPY $vgpr42403    %9:_(s32) = COPY $vgpr52404    %10:_(s32) = COPY $vgpr62405    %11:_(s32) = COPY $vgpr72406    %28:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2407    %29:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2408    %30:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2409    %31:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2410    %0:_(<4 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64), %31(s64)2411    %12:_(s32) = COPY $vgpr82412    %13:_(s32) = COPY $vgpr92413    %14:_(s32) = COPY $vgpr102414    %15:_(s32) = COPY $vgpr112415    %16:_(s32) = COPY $vgpr122416    %17:_(s32) = COPY $vgpr132417    %18:_(s32) = COPY $vgpr142418    %19:_(s32) = COPY $vgpr152419    %32:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2420    %33:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2421    %34:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2422    %35:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2423    %1:_(<4 x s64>) = G_BUILD_VECTOR %32(s64), %33(s64), %34(s64), %35(s64)2424    %20:_(s32) = COPY $vgpr162425    %21:_(s32) = COPY $vgpr172426    %22:_(s32) = COPY $vgpr182427    %23:_(s32) = COPY $vgpr192428    %24:_(s32) = COPY $vgpr202429    %25:_(s32) = COPY $vgpr212430    %26:_(s32) = COPY $vgpr222431    %27:_(s32) = COPY $vgpr232432    %36:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2433    %37:_(s64) = G_MERGE_VALUES %22(s32), %23(s32)2434    %38:_(s64) = G_MERGE_VALUES %24(s32), %25(s32)2435    %39:_(s64) = G_MERGE_VALUES %26(s32), %27(s32)2436    %2:_(<4 x s64>) = G_BUILD_VECTOR %36(s64), %37(s64), %38(s64), %39(s64)2437    %40:_(<4 x s64>) = G_FMUL %0, %12438    %41:_(<4 x s64>) = G_FADD %40, %22439    %43:_(s32), %44:_(s32), %45:_(s32), %46:_(s32), %47:_(s32), %48:_(s32), %49:_(s32), %50:_(s32) = G_UNMERGE_VALUES %41(<4 x s64>)2440    $vgpr0 = COPY %43(s32)2441    $vgpr1 = COPY %44(s32)2442    $vgpr2 = COPY %45(s32)2443    $vgpr3 = COPY %46(s32)2444    $vgpr4 = COPY %47(s32)2445    $vgpr5 = COPY %48(s32)2446    $vgpr6 = COPY %49(s32)2447    $vgpr7 = COPY %50(s32)2448    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72449...2450 2451---2452name:            test_4xdouble_add_mul_contract2453body:             |2454  bb.1.entry:2455    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr17, $vgpr18, $vgpr19, $vgpr20, $vgpr21, $vgpr22, $vgpr232456 2457    ; GFX9-LABEL: name: test_4xdouble_add_mul_contract2458    ; 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, $vgpr232459    ; GFX9-NEXT: {{  $}}2460    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02461    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12462    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22463    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32464    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42465    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52466    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62467    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72468    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2469    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2470    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2471    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2472    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2473    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82474    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92475    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102476    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112477    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122478    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132479    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142480    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152481    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2482    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2483    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2484    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2485    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2486    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162487    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172488    ; GFX9-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182489    ; GFX9-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192490    ; GFX9-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202491    ; GFX9-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212492    ; GFX9-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222493    ; GFX9-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232494    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2495    ; GFX9-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2496    ; GFX9-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2497    ; GFX9-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2498    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2499    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2500    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]2501    ; 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>)2502    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2503    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2504    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2505    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2506    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2507    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2508    ; GFX9-NEXT: $vgpr6 = COPY [[UV6]](s32)2509    ; GFX9-NEXT: $vgpr7 = COPY [[UV7]](s32)2510    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72511    ;2512    ; GFX9-DENORM-LABEL: name: test_4xdouble_add_mul_contract2513    ; 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, $vgpr232514    ; GFX9-DENORM-NEXT: {{  $}}2515    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02516    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12517    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22518    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32519    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42520    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52521    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62522    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72523    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2524    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2525    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2526    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2527    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2528    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82529    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92530    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102531    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112532    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122533    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132534    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142535    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152536    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2537    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2538    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2539    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2540    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2541    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162542    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172543    ; GFX9-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182544    ; GFX9-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192545    ; GFX9-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202546    ; GFX9-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212547    ; GFX9-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222548    ; GFX9-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232549    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2550    ; GFX9-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2551    ; GFX9-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2552    ; GFX9-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2553    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2554    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2555    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]2556    ; 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>)2557    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2558    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2559    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2560    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2561    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2562    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2563    ; GFX9-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2564    ; GFX9-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2565    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72566    ;2567    ; GFX10-LABEL: name: test_4xdouble_add_mul_contract2568    ; 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, $vgpr232569    ; GFX10-NEXT: {{  $}}2570    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02571    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12572    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22573    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32574    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42575    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52576    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62577    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72578    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2579    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2580    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2581    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2582    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2583    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82584    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92585    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102586    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112587    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122588    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132589    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142590    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152591    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2592    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2593    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2594    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2595    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2596    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162597    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172598    ; GFX10-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182599    ; GFX10-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192600    ; GFX10-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202601    ; GFX10-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212602    ; GFX10-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222603    ; GFX10-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232604    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2605    ; GFX10-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2606    ; GFX10-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2607    ; GFX10-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2608    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2609    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2610    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]2611    ; 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>)2612    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2613    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2614    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2615    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2616    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2617    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2618    ; GFX10-NEXT: $vgpr6 = COPY [[UV6]](s32)2619    ; GFX10-NEXT: $vgpr7 = COPY [[UV7]](s32)2620    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72621    ;2622    ; GFX10-DENORM-LABEL: name: test_4xdouble_add_mul_contract2623    ; 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, $vgpr232624    ; GFX10-DENORM-NEXT: {{  $}}2625    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02626    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12627    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22628    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32629    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42630    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52631    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62632    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72633    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2634    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2635    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2636    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2637    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64), [[MV3]](s64)2638    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82639    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92640    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102641    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112642    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122643    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132644    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142645    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152646    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2647    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2648    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2649    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2650    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV4]](s64), [[MV5]](s64), [[MV6]](s64), [[MV7]](s64)2651    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162652    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172653    ; GFX10-DENORM-NEXT: [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr182654    ; GFX10-DENORM-NEXT: [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr192655    ; GFX10-DENORM-NEXT: [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr202656    ; GFX10-DENORM-NEXT: [[COPY21:%[0-9]+]]:_(s32) = COPY $vgpr212657    ; GFX10-DENORM-NEXT: [[COPY22:%[0-9]+]]:_(s32) = COPY $vgpr222658    ; GFX10-DENORM-NEXT: [[COPY23:%[0-9]+]]:_(s32) = COPY $vgpr232659    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2660    ; GFX10-DENORM-NEXT: [[MV9:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY18]](s32), [[COPY19]](s32)2661    ; GFX10-DENORM-NEXT: [[MV10:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY20]](s32), [[COPY21]](s32)2662    ; GFX10-DENORM-NEXT: [[MV11:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY22]](s32), [[COPY23]](s32)2663    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[MV8]](s64), [[MV9]](s64), [[MV10]](s64), [[MV11]](s64)2664    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<4 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2665    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<4 x s64>) = contract G_FADD [[FMUL]], [[BUILD_VECTOR2]]2666    ; 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>)2667    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2668    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2669    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2670    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2671    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2672    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2673    ; GFX10-DENORM-NEXT: $vgpr6 = COPY [[UV6]](s32)2674    ; GFX10-DENORM-NEXT: $vgpr7 = COPY [[UV7]](s32)2675    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72676    %4:_(s32) = COPY $vgpr02677    %5:_(s32) = COPY $vgpr12678    %6:_(s32) = COPY $vgpr22679    %7:_(s32) = COPY $vgpr32680    %8:_(s32) = COPY $vgpr42681    %9:_(s32) = COPY $vgpr52682    %10:_(s32) = COPY $vgpr62683    %11:_(s32) = COPY $vgpr72684    %28:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2685    %29:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2686    %30:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2687    %31:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2688    %0:_(<4 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64), %31(s64)2689    %12:_(s32) = COPY $vgpr82690    %13:_(s32) = COPY $vgpr92691    %14:_(s32) = COPY $vgpr102692    %15:_(s32) = COPY $vgpr112693    %16:_(s32) = COPY $vgpr122694    %17:_(s32) = COPY $vgpr132695    %18:_(s32) = COPY $vgpr142696    %19:_(s32) = COPY $vgpr152697    %32:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2698    %33:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2699    %34:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2700    %35:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2701    %1:_(<4 x s64>) = G_BUILD_VECTOR %32(s64), %33(s64), %34(s64), %35(s64)2702    %20:_(s32) = COPY $vgpr162703    %21:_(s32) = COPY $vgpr172704    %22:_(s32) = COPY $vgpr182705    %23:_(s32) = COPY $vgpr192706    %24:_(s32) = COPY $vgpr202707    %25:_(s32) = COPY $vgpr212708    %26:_(s32) = COPY $vgpr222709    %27:_(s32) = COPY $vgpr232710    %36:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2711    %37:_(s64) = G_MERGE_VALUES %22(s32), %23(s32)2712    %38:_(s64) = G_MERGE_VALUES %24(s32), %25(s32)2713    %39:_(s64) = G_MERGE_VALUES %26(s32), %27(s32)2714    %2:_(<4 x s64>) = G_BUILD_VECTOR %36(s64), %37(s64), %38(s64), %39(s64)2715    %40:_(<4 x s64>) = contract G_FMUL %0, %12716    %41:_(<4 x s64>) = contract G_FADD %40, %22717    %43:_(s32), %44:_(s32), %45:_(s32), %46:_(s32), %47:_(s32), %48:_(s32), %49:_(s32), %50:_(s32) = G_UNMERGE_VALUES %41(<4 x s64>)2718    $vgpr0 = COPY %43(s32)2719    $vgpr1 = COPY %44(s32)2720    $vgpr2 = COPY %45(s32)2721    $vgpr3 = COPY %46(s32)2722    $vgpr4 = COPY %47(s32)2723    $vgpr5 = COPY %48(s32)2724    $vgpr6 = COPY %49(s32)2725    $vgpr7 = COPY %50(s32)2726    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr5, implicit $vgpr6, implicit $vgpr72727...2728 2729---2730name:            test_3xdouble_add_mul_rhs2731body:             |2732  bb.1.entry:2733    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172734 2735    ; GFX9-LABEL: name: test_3xdouble_add_mul_rhs2736    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172737    ; GFX9-NEXT: {{  $}}2738    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02739    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12740    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22741    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32742    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42743    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52744    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2745    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2746    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2747    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2748    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62749    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72750    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82751    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92752    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102753    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112754    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2755    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2756    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2757    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2758    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122759    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132760    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142761    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152762    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162763    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172764    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2765    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2766    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2767    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2768    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2769    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]2770    ; 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>)2771    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2772    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2773    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2774    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2775    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2776    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)2777    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52778    ;2779    ; GFX9-DENORM-LABEL: name: test_3xdouble_add_mul_rhs2780    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172781    ; GFX9-DENORM-NEXT: {{  $}}2782    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02783    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12784    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22785    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32786    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42787    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52788    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2789    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2790    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2791    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2792    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62793    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72794    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82795    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92796    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102797    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112798    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2799    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2800    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2801    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2802    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122803    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132804    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142805    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152806    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162807    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172808    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2809    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2810    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2811    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2812    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2813    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]2814    ; 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>)2815    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2816    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2817    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2818    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2819    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2820    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2821    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52822    ;2823    ; GFX10-LABEL: name: test_3xdouble_add_mul_rhs2824    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172825    ; GFX10-NEXT: {{  $}}2826    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02827    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12828    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22829    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32830    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42831    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52832    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2833    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2834    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2835    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2836    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62837    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72838    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82839    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92840    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102841    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112842    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2843    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2844    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2845    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2846    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122847    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132848    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142849    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152850    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162851    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172852    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2853    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2854    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2855    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2856    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2857    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]2858    ; 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>)2859    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)2860    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)2861    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)2862    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)2863    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)2864    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)2865    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52866    ;2867    ; GFX10-DENORM-LABEL: name: test_3xdouble_add_mul_rhs2868    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172869    ; GFX10-DENORM-NEXT: {{  $}}2870    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02871    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12872    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22873    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32874    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42875    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52876    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2877    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2878    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2879    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2880    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62881    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72882    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82883    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92884    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102885    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112886    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2887    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2888    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2889    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2890    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122891    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132892    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142893    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152894    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162895    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172896    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2897    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2898    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2899    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2900    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2901    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = G_FADD [[BUILD_VECTOR2]], [[FMUL]]2902    ; 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>)2903    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)2904    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)2905    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)2906    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)2907    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)2908    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)2909    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52910    %4:_(s32) = COPY $vgpr02911    %5:_(s32) = COPY $vgpr12912    %6:_(s32) = COPY $vgpr22913    %7:_(s32) = COPY $vgpr32914    %8:_(s32) = COPY $vgpr42915    %9:_(s32) = COPY $vgpr52916    %22:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)2917    %23:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)2918    %24:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)2919    %0:_(<3 x s64>) = G_BUILD_VECTOR %22(s64), %23(s64), %24(s64)2920    %10:_(s32) = COPY $vgpr62921    %11:_(s32) = COPY $vgpr72922    %12:_(s32) = COPY $vgpr82923    %13:_(s32) = COPY $vgpr92924    %14:_(s32) = COPY $vgpr102925    %15:_(s32) = COPY $vgpr112926    %25:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)2927    %26:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)2928    %27:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)2929    %1:_(<3 x s64>) = G_BUILD_VECTOR %25(s64), %26(s64), %27(s64)2930    %16:_(s32) = COPY $vgpr122931    %17:_(s32) = COPY $vgpr132932    %18:_(s32) = COPY $vgpr142933    %19:_(s32) = COPY $vgpr152934    %20:_(s32) = COPY $vgpr162935    %21:_(s32) = COPY $vgpr172936    %28:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)2937    %29:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)2938    %30:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)2939    %2:_(<3 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64)2940    %31:_(<3 x s64>) = G_FMUL %0, %12941    %32:_(<3 x s64>) = G_FADD %2, %312942    %34:_(s32), %35:_(s32), %36:_(s32), %37:_(s32), %38:_(s32), %39:_(s32) = G_UNMERGE_VALUES %32(<3 x s64>)2943    $vgpr0 = COPY %34(s32)2944    $vgpr1 = COPY %35(s32)2945    $vgpr2 = COPY %36(s32)2946    $vgpr3 = COPY %37(s32)2947    $vgpr4 = COPY %38(s32)2948    $vgpr5 = COPY %39(s32)2949    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr52950...2951 2952---2953name:            test_3xdouble_add_mul_rhs_contract2954body:             |2955  bb.1.entry:2956    liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172957 2958    ; GFX9-LABEL: name: test_3xdouble_add_mul_rhs_contract2959    ; GFX9: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr172960    ; GFX9-NEXT: {{  $}}2961    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr02962    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr12963    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr22964    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr32965    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr42966    ; GFX9-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr52967    ; GFX9-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)2968    ; GFX9-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)2969    ; GFX9-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)2970    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)2971    ; GFX9-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr62972    ; GFX9-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr72973    ; GFX9-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr82974    ; GFX9-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr92975    ; GFX9-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr102976    ; GFX9-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr112977    ; GFX9-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)2978    ; GFX9-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)2979    ; GFX9-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)2980    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)2981    ; GFX9-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr122982    ; GFX9-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr132983    ; GFX9-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr142984    ; GFX9-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr152985    ; GFX9-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr162986    ; GFX9-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr172987    ; GFX9-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)2988    ; GFX9-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)2989    ; GFX9-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)2990    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)2991    ; GFX9-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]2992    ; GFX9-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]2993    ; 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>)2994    ; GFX9-NEXT: $vgpr0 = COPY [[UV]](s32)2995    ; GFX9-NEXT: $vgpr1 = COPY [[UV1]](s32)2996    ; GFX9-NEXT: $vgpr2 = COPY [[UV2]](s32)2997    ; GFX9-NEXT: $vgpr3 = COPY [[UV3]](s32)2998    ; GFX9-NEXT: $vgpr4 = COPY [[UV4]](s32)2999    ; GFX9-NEXT: $vgpr5 = COPY [[UV5]](s32)3000    ; GFX9-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr53001    ;3002    ; GFX9-DENORM-LABEL: name: test_3xdouble_add_mul_rhs_contract3003    ; GFX9-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr173004    ; GFX9-DENORM-NEXT: {{  $}}3005    ; GFX9-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr03006    ; GFX9-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr13007    ; GFX9-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr23008    ; GFX9-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr33009    ; GFX9-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr43010    ; GFX9-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr53011    ; GFX9-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3012    ; GFX9-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3013    ; GFX9-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)3014    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)3015    ; GFX9-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr63016    ; GFX9-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr73017    ; GFX9-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr83018    ; GFX9-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr93019    ; GFX9-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr103020    ; GFX9-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr113021    ; GFX9-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)3022    ; GFX9-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)3023    ; GFX9-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)3024    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)3025    ; GFX9-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr123026    ; GFX9-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr133027    ; GFX9-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr143028    ; GFX9-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr153029    ; GFX9-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr163030    ; GFX9-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr173031    ; GFX9-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)3032    ; GFX9-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)3033    ; GFX9-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)3034    ; GFX9-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)3035    ; GFX9-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]3036    ; GFX9-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]3037    ; 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>)3038    ; GFX9-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)3039    ; GFX9-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)3040    ; GFX9-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)3041    ; GFX9-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)3042    ; GFX9-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)3043    ; GFX9-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)3044    ; GFX9-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr53045    ;3046    ; GFX10-LABEL: name: test_3xdouble_add_mul_rhs_contract3047    ; GFX10: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr173048    ; GFX10-NEXT: {{  $}}3049    ; GFX10-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr03050    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr13051    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr23052    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr33053    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr43054    ; GFX10-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr53055    ; GFX10-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3056    ; GFX10-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3057    ; GFX10-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)3058    ; GFX10-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)3059    ; GFX10-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr63060    ; GFX10-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr73061    ; GFX10-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr83062    ; GFX10-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr93063    ; GFX10-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr103064    ; GFX10-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr113065    ; GFX10-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)3066    ; GFX10-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)3067    ; GFX10-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)3068    ; GFX10-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)3069    ; GFX10-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr123070    ; GFX10-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr133071    ; GFX10-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr143072    ; GFX10-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr153073    ; GFX10-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr163074    ; GFX10-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr173075    ; GFX10-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)3076    ; GFX10-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)3077    ; GFX10-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)3078    ; GFX10-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)3079    ; GFX10-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]3080    ; GFX10-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]3081    ; 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>)3082    ; GFX10-NEXT: $vgpr0 = COPY [[UV]](s32)3083    ; GFX10-NEXT: $vgpr1 = COPY [[UV1]](s32)3084    ; GFX10-NEXT: $vgpr2 = COPY [[UV2]](s32)3085    ; GFX10-NEXT: $vgpr3 = COPY [[UV3]](s32)3086    ; GFX10-NEXT: $vgpr4 = COPY [[UV4]](s32)3087    ; GFX10-NEXT: $vgpr5 = COPY [[UV5]](s32)3088    ; GFX10-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr53089    ;3090    ; GFX10-DENORM-LABEL: name: test_3xdouble_add_mul_rhs_contract3091    ; GFX10-DENORM: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8, $vgpr9, $vgpr10, $vgpr11, $vgpr12, $vgpr13, $vgpr14, $vgpr15, $vgpr16, $vgpr173092    ; GFX10-DENORM-NEXT: {{  $}}3093    ; GFX10-DENORM-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr03094    ; GFX10-DENORM-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr13095    ; GFX10-DENORM-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $vgpr23096    ; GFX10-DENORM-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $vgpr33097    ; GFX10-DENORM-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY $vgpr43098    ; GFX10-DENORM-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY $vgpr53099    ; GFX10-DENORM-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY]](s32), [[COPY1]](s32)3100    ; GFX10-DENORM-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[COPY3]](s32)3101    ; GFX10-DENORM-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY4]](s32), [[COPY5]](s32)3102    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV]](s64), [[MV1]](s64), [[MV2]](s64)3103    ; GFX10-DENORM-NEXT: [[COPY6:%[0-9]+]]:_(s32) = COPY $vgpr63104    ; GFX10-DENORM-NEXT: [[COPY7:%[0-9]+]]:_(s32) = COPY $vgpr73105    ; GFX10-DENORM-NEXT: [[COPY8:%[0-9]+]]:_(s32) = COPY $vgpr83106    ; GFX10-DENORM-NEXT: [[COPY9:%[0-9]+]]:_(s32) = COPY $vgpr93107    ; GFX10-DENORM-NEXT: [[COPY10:%[0-9]+]]:_(s32) = COPY $vgpr103108    ; GFX10-DENORM-NEXT: [[COPY11:%[0-9]+]]:_(s32) = COPY $vgpr113109    ; GFX10-DENORM-NEXT: [[MV3:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY6]](s32), [[COPY7]](s32)3110    ; GFX10-DENORM-NEXT: [[MV4:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY8]](s32), [[COPY9]](s32)3111    ; GFX10-DENORM-NEXT: [[MV5:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY10]](s32), [[COPY11]](s32)3112    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV3]](s64), [[MV4]](s64), [[MV5]](s64)3113    ; GFX10-DENORM-NEXT: [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr123114    ; GFX10-DENORM-NEXT: [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr133115    ; GFX10-DENORM-NEXT: [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr143116    ; GFX10-DENORM-NEXT: [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr153117    ; GFX10-DENORM-NEXT: [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr163118    ; GFX10-DENORM-NEXT: [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr173119    ; GFX10-DENORM-NEXT: [[MV6:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY12]](s32), [[COPY13]](s32)3120    ; GFX10-DENORM-NEXT: [[MV7:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY14]](s32), [[COPY15]](s32)3121    ; GFX10-DENORM-NEXT: [[MV8:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY16]](s32), [[COPY17]](s32)3122    ; GFX10-DENORM-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[MV6]](s64), [[MV7]](s64), [[MV8]](s64)3123    ; GFX10-DENORM-NEXT: [[FMUL:%[0-9]+]]:_(<3 x s64>) = contract G_FMUL [[BUILD_VECTOR]], [[BUILD_VECTOR1]]3124    ; GFX10-DENORM-NEXT: [[FADD:%[0-9]+]]:_(<3 x s64>) = contract G_FADD [[BUILD_VECTOR2]], [[FMUL]]3125    ; 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>)3126    ; GFX10-DENORM-NEXT: $vgpr0 = COPY [[UV]](s32)3127    ; GFX10-DENORM-NEXT: $vgpr1 = COPY [[UV1]](s32)3128    ; GFX10-DENORM-NEXT: $vgpr2 = COPY [[UV2]](s32)3129    ; GFX10-DENORM-NEXT: $vgpr3 = COPY [[UV3]](s32)3130    ; GFX10-DENORM-NEXT: $vgpr4 = COPY [[UV4]](s32)3131    ; GFX10-DENORM-NEXT: $vgpr5 = COPY [[UV5]](s32)3132    ; GFX10-DENORM-NEXT: S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr53133    %4:_(s32) = COPY $vgpr03134    %5:_(s32) = COPY $vgpr13135    %6:_(s32) = COPY $vgpr23136    %7:_(s32) = COPY $vgpr33137    %8:_(s32) = COPY $vgpr43138    %9:_(s32) = COPY $vgpr53139    %22:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)3140    %23:_(s64) = G_MERGE_VALUES %6(s32), %7(s32)3141    %24:_(s64) = G_MERGE_VALUES %8(s32), %9(s32)3142    %0:_(<3 x s64>) = G_BUILD_VECTOR %22(s64), %23(s64), %24(s64)3143    %10:_(s32) = COPY $vgpr63144    %11:_(s32) = COPY $vgpr73145    %12:_(s32) = COPY $vgpr83146    %13:_(s32) = COPY $vgpr93147    %14:_(s32) = COPY $vgpr103148    %15:_(s32) = COPY $vgpr113149    %25:_(s64) = G_MERGE_VALUES %10(s32), %11(s32)3150    %26:_(s64) = G_MERGE_VALUES %12(s32), %13(s32)3151    %27:_(s64) = G_MERGE_VALUES %14(s32), %15(s32)3152    %1:_(<3 x s64>) = G_BUILD_VECTOR %25(s64), %26(s64), %27(s64)3153    %16:_(s32) = COPY $vgpr123154    %17:_(s32) = COPY $vgpr133155    %18:_(s32) = COPY $vgpr143156    %19:_(s32) = COPY $vgpr153157    %20:_(s32) = COPY $vgpr163158    %21:_(s32) = COPY $vgpr173159    %28:_(s64) = G_MERGE_VALUES %16(s32), %17(s32)3160    %29:_(s64) = G_MERGE_VALUES %18(s32), %19(s32)3161    %30:_(s64) = G_MERGE_VALUES %20(s32), %21(s32)3162    %2:_(<3 x s64>) = G_BUILD_VECTOR %28(s64), %29(s64), %30(s64)3163    %31:_(<3 x s64>) = contract G_FMUL %0, %13164    %32:_(<3 x s64>) = contract G_FADD %2, %313165    %34:_(s32), %35:_(s32), %36:_(s32), %37:_(s32), %38:_(s32), %39:_(s32) = G_UNMERGE_VALUES %32(<3 x s64>)3166    $vgpr0 = COPY %34(s32)3167    $vgpr1 = COPY %35(s32)3168    $vgpr2 = COPY %36(s32)3169    $vgpr3 = COPY %37(s32)3170    $vgpr4 = COPY %38(s32)3171    $vgpr5 = COPY %39(s32)3172    S_SETPC_B64_return $sgpr30_sgpr31, implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3, implicit $vgpr4, implicit $vgpr53173...3174