brintos

brintos / llvm-project-archived public Read only

0
0
Text · 34.5 KiB · bec188e Raw
885 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=amdgcn -run-pass si-fold-operands -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4---5name: fold-imm-copy6tracksRegLiveness: true7body:             |8  bb.0:9    liveins: $vgpr0, $sgpr0_sgpr110    ; GCN-LABEL: name: fold-imm-copy11    ; GCN: liveins: $vgpr0, $sgpr0_sgpr112    ; GCN-NEXT: {{  $}}13    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr014    ; GCN-NEXT: [[COPY1:%[0-9]+]]:sgpr_64 = COPY $sgpr0_sgpr115    ; GCN-NEXT: [[S_LOAD_DWORDX4_IMM:%[0-9]+]]:sgpr_128 = S_LOAD_DWORDX4_IMM [[COPY1]], 9, 016    ; GCN-NEXT: [[V_LSHLREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHLREV_B32_e64 2, [[COPY]], implicit $exec17    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec18    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE killed [[V_LSHLREV_B32_e64_]], %subreg.sub0, killed [[V_MOV_B32_e32_]], %subreg.sub119    ; GCN-NEXT: [[BUFFER_LOAD_DWORD_ADDR64_:%[0-9]+]]:vgpr_32 = BUFFER_LOAD_DWORD_ADDR64 [[REG_SEQUENCE]], [[S_LOAD_DWORDX4_IMM]], 0, 4, 0, 0, implicit $exec20    ; GCN-NEXT: [[V_AND_B32_e32_:%[0-9]+]]:vgpr_32 = V_AND_B32_e32 65535, [[BUFFER_LOAD_DWORD_ADDR64_]], implicit $exec21    %0:vgpr_32 = COPY $vgpr022    %1:sgpr_64 = COPY $sgpr0_sgpr123    %2:sgpr_128 = S_LOAD_DWORDX4_IMM %1, 9, 024    %3:sreg_32_xm0 = S_MOV_B32 225    %4:vgpr_32 = V_LSHLREV_B32_e64 killed %3, %0, implicit $exec26    %5:vgpr_32 = V_MOV_B32_e32 0, implicit $exec27    %6:vreg_64 = REG_SEQUENCE killed %4, %subreg.sub0, killed %5, %subreg.sub128    %7:vgpr_32 = BUFFER_LOAD_DWORD_ADDR64 %6, %2, 0, 4, 0, 0, implicit $exec29    %8:sreg_32_xm0 = S_MOV_B32 6553530    %9:vgpr_32 = COPY %831    %10:vgpr_32 = V_AND_B32_e32 %7, %9, implicit $exec32...33 34---35# The first XOR needs commuting to fold that immediate operand.36name: no_extra_fold_on_same_opnd37tracksRegLiveness: true38body:             |39  bb.0:40    ; GCN-LABEL: name: no_extra_fold_on_same_opnd41    ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF42    ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF43    ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF44    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec45    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE killed [[DEF]], %subreg.sub0, killed [[V_MOV_B32_e32_]], %subreg.sub146    ; GCN-NEXT: [[V_XOR_B32_e32_:%[0-9]+]]:vgpr_32 = V_XOR_B32_e32 [[DEF2]], [[REG_SEQUENCE]].sub0, implicit $exec47    %0:vgpr_32 = IMPLICIT_DEF48    %1:vgpr_32 = IMPLICIT_DEF49    %2:vgpr_32 = IMPLICIT_DEF50    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec51    %4:vreg_64 = REG_SEQUENCE killed %0, %subreg.sub0, killed %3, %subreg.sub152    %5:vgpr_32 = V_XOR_B32_e32 %1, %4.sub1, implicit $exec53    %6:vgpr_32 = V_XOR_B32_e32 %2, %4.sub0, implicit $exec54...55 56---57 58# Make sure the subreg index is not reinterpreted when folding59# immediates60#61name: clear_subreg_imm_fold62tracksRegLiveness: true63body:             |64  bb.0:65    ; GCN-LABEL: name: clear_subreg_imm_fold66    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 -867    ; GCN-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 -168    ; GCN-NEXT: S_ENDPGM 0, implicit [[S_MOV_B32_]], implicit [[S_MOV_B32_1]]69    %0:sreg_64 = S_MOV_B64 -870    %1:sgpr_32 = COPY %0.sub071    %2:sgpr_32 = COPY %0.sub172    S_ENDPGM 0, implicit %1, implicit %273 74...75 76---77name: no_fold_imm_into_m078tracksRegLiveness: true79body:             |80  bb.0:81    ; GCN-LABEL: name: no_fold_imm_into_m082    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -883    ; GCN-NEXT: $m0 = COPY [[S_MOV_B32_]]84    ; GCN-NEXT: S_ENDPGM 0, implicit $m085    %0:sreg_32 = S_MOV_B32 -886    $m0 = COPY %087    S_ENDPGM 0, implicit $m088 89...90 91---92name: fold_sgpr_imm_to_vgpr_copy93tracksRegLiveness: true94body:             |95  bb.0:96    ; GCN-LABEL: name: fold_sgpr_imm_to_vgpr_copy97    ; GCN: $vgpr0 = V_MOV_B32_e32 -8, implicit $exec98    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr099    %0:sreg_32 = S_MOV_B32 -8100    $vgpr0 = COPY %0101    S_ENDPGM 0, implicit $vgpr0102 103...104 105# The users of $vgpr1 should not be visited for further immediate106# folding.107 108---109name: no_fold_physreg_users_vgpr110tracksRegLiveness: true111body:             |112  bb.0:113    ; GCN-LABEL: name: no_fold_physreg_users_vgpr114    ; GCN: $vgpr1 = V_MOV_B32_e32 0, implicit $exec115    ; GCN-NEXT: S_NOP 0, implicit-def $vgpr1116    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr1117    ; GCN-NEXT: $vgpr2 = COPY [[COPY]]118    ; GCN-NEXT: S_ENDPGM 0119    %0:sreg_32 = S_MOV_B32 0120    %1:vgpr_32 = COPY %0121    $vgpr1 = COPY %0122    S_NOP 0, implicit-def $vgpr1123    %2:vgpr_32 = COPY $vgpr1124    $vgpr2 = COPY %2125    S_ENDPGM 0126 127...128 129---130name: av_mov_b32_imm_pseudo_copy_av_32_to_physreg_agpr131tracksRegLiveness: true132body:             |133  bb.0:134    ; GCN-LABEL: name: av_mov_b32_imm_pseudo_copy_av_32_to_physreg_agpr135    ; GCN: [[AV_MOV_:%[0-9]+]]:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec136    ; GCN-NEXT: $agpr0 = COPY [[AV_MOV_]]137    ; GCN-NEXT: S_ENDPGM 0, implicit $agpr0138    %0:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec139    $agpr0 = COPY %0140    S_ENDPGM 0, implicit $agpr0141 142...143 144---145name: av_mov_b32_imm_pseudo_copy_av_32_to_physreg_vgpr146tracksRegLiveness: true147body:             |148  bb.0:149    ; GCN-LABEL: name: av_mov_b32_imm_pseudo_copy_av_32_to_physreg_vgpr150    ; GCN: [[AV_MOV_:%[0-9]+]]:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec151    ; GCN-NEXT: $vgpr0 = COPY [[AV_MOV_]]152    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0153    %0:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec154    $vgpr0 = COPY %0155    S_ENDPGM 0, implicit $vgpr0156 157...158 159---160name: av_mov_b32_imm_pseudo_copy_av_32_to_virtreg_agpr161tracksRegLiveness: true162body:             |163  bb.0:164    ; GCN-LABEL: name: av_mov_b32_imm_pseudo_copy_av_32_to_virtreg_agpr165    ; GCN: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 0, implicit $exec166    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_ACCVGPR_WRITE_B32_e64_]]167    %0:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec168    %1:agpr_32 = COPY %0169    S_ENDPGM 0, implicit %1170 171...172 173---174name: av_mov_b32_imm_pseudo_copy_av_32_to_virtreg_vgpr175tracksRegLiveness: true176body:             |177  bb.0:178    ; GCN-LABEL: name: av_mov_b32_imm_pseudo_copy_av_32_to_virtreg_vgpr179    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec180    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_MOV_B32_e32_]]181    %0:av_32 = AV_MOV_B32_IMM_PSEUDO 0, implicit $exec182    %1:vgpr_32 = COPY %0183    S_ENDPGM 0, implicit %1184 185...186 187---188name: v_mov_b32_imm_literal_copy_v_to_agpr_32189tracksRegLiveness: true190body:             |191  bb.0:192    ; GCN-LABEL: name: v_mov_b32_imm_literal_copy_v_to_agpr_32193    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 999, implicit $exec194    ; GCN-NEXT: [[V_ACCVGPR_WRITE_B32_e64_:%[0-9]+]]:agpr_32 = V_ACCVGPR_WRITE_B32_e64 [[V_MOV_B32_e32_]], implicit $exec195    ; GCN-NEXT: $agpr0 = COPY [[V_ACCVGPR_WRITE_B32_e64_]]196    ; GCN-NEXT: S_ENDPGM 0197    %0:vgpr_32 = V_MOV_B32_e32 999, implicit $exec198    %1:agpr_32 = COPY %0199    $agpr0 = COPY %1200    S_ENDPGM 0201 202...203 204---205name: s_mov_b32_inlineimm_copy_s_to_av_32206tracksRegLiveness: true207body:             |208  bb.0:209    ; GCN-LABEL: name: s_mov_b32_inlineimm_copy_s_to_av_32210    ; GCN: [[AV_MOV_:%[0-9]+]]:av_32 = AV_MOV_B32_IMM_PSEUDO 32, implicit $exec211    ; GCN-NEXT: $agpr0 = COPY [[AV_MOV_]]212    ; GCN-NEXT: S_ENDPGM 0213    %0:sreg_32 = S_MOV_B32 32214    %1:av_32 = COPY %0215    $agpr0 = COPY %1216    S_ENDPGM 0217 218...219 220---221name: v_mov_b32_inlineimm_copy_v_to_av_32222tracksRegLiveness: true223body:             |224 bb.0:225    ; GCN-LABEL: name: v_mov_b32_inlineimm_copy_v_to_av_32226    ; GCN: [[AV_MOV_:%[0-9]+]]:av_32 = AV_MOV_B32_IMM_PSEUDO 32, implicit $exec227    ; GCN-NEXT: $agpr0 = COPY [[AV_MOV_]]228    ; GCN-NEXT: S_ENDPGM 0229   %0:vgpr_32 = V_MOV_B32_e32 32, implicit $exec230   %1:av_32 = COPY %0231   $agpr0 = COPY %1232   S_ENDPGM 0233 234...235 236---237name: s_mov_b32_imm_literal_copy_s_to_av_32238tracksRegLiveness: true239body:             |240  bb.0:241    ; GCN-LABEL: name: s_mov_b32_imm_literal_copy_s_to_av_32242    ; GCN: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 999243    ; GCN-NEXT: [[COPY:%[0-9]+]]:av_32 = COPY [[S_MOV_B32_]]244    ; GCN-NEXT: $agpr0 = COPY [[COPY]]245    ; GCN-NEXT: S_ENDPGM 0246    %0:sreg_32 = S_MOV_B32 999247    %1:av_32 = COPY %0248    $agpr0 = COPY %1249    S_ENDPGM 0250 251...252 253---254name: v_mov_b32_imm_literal_copy_v_to_av_32255tracksRegLiveness: true256body:             |257  bb.0:258    ; GCN-LABEL: name: v_mov_b32_imm_literal_copy_v_to_av_32259    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 999, implicit $exec260    ; GCN-NEXT: [[COPY:%[0-9]+]]:av_32 = COPY [[V_MOV_B32_e32_]]261    ; GCN-NEXT: $agpr0 = COPY [[COPY]]262    ; GCN-NEXT: S_ENDPGM 0263    %0:vgpr_32 = V_MOV_B32_e32 999, implicit $exec264    %1:av_32 = COPY %0265    $agpr0 = COPY %1266    S_ENDPGM 0267 268...269 270---271name: v_mov_b64_pseudo_imm_0_full_copy_to_f64_use272tracksRegLiveness: true273body:             |274  bb.0:275  liveins: $vgpr0_vgpr1276    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_0_full_copy_to_f64_use277    ; GCN: liveins: $vgpr0_vgpr1278    ; GCN-NEXT: {{  $}}279    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1280    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, 0, 0, 0, implicit $mode, implicit $exec281    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]282    ; GCN-NEXT: S_ENDPGM 0283    %0:vreg_64_align2 = COPY $vgpr0_vgpr1284    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 0, implicit $exec285    %2:vreg_64_align2 = COPY %1286    %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec287    $vgpr0_vgpr1 = COPY %3288    S_ENDPGM 0289 290...291 292---293name: v_mov_b64_pseudo_imm_fp64_1_full_copy_to_f64_use294tracksRegLiveness: true295body:             |296  bb.0:297  liveins: $vgpr0_vgpr1298    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_full_copy_to_f64_use299    ; GCN: liveins: $vgpr0_vgpr1300    ; GCN-NEXT: {{  $}}301    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1302    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, 4607182418800017408, 0, 0, implicit $mode, implicit $exec303    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]304    ; GCN-NEXT: S_ENDPGM 0305    %0:vreg_64_align2 = COPY $vgpr0_vgpr1306    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec307    %2:vreg_64_align2 = COPY %1308    %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec309    $vgpr0_vgpr1 = COPY %3310    S_ENDPGM 0311 312...313 314---315name: v_mov_b64_pseudo_lit_full_copy_to_f64_use316tracksRegLiveness: true317body:             |318  bb.0:319  liveins: $vgpr0_vgpr1320    ; GCN-LABEL: name: v_mov_b64_pseudo_lit_full_copy_to_f64_use321    ; GCN: liveins: $vgpr0_vgpr1322    ; GCN-NEXT: {{  $}}323    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1324    ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329592, implicit $exec325    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[V_MOV_B]], 0, 0, implicit $mode, implicit $exec326    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]327    ; GCN-NEXT: S_ENDPGM 0328    %0:vreg_64_align2 = COPY $vgpr0_vgpr1329    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4290672329592, implicit $exec330    %2:vreg_64_align2 = COPY %1331    %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec332    $vgpr0_vgpr1 = COPY %3333    S_ENDPGM 0334 335...336 337---338name: v_mov_b64_pseudo_imm_fp32_1_splat_full_copy_to_f64_use339tracksRegLiveness: true340body:             |341  bb.0:342  liveins: $vgpr0_vgpr1343    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_full_copy_to_f64_use344    ; GCN: liveins: $vgpr0_vgpr1345    ; GCN-NEXT: {{  $}}346    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1347    ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec348    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[V_MOV_B]], 0, 0, implicit $mode, implicit $exec349    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]350    ; GCN-NEXT: S_ENDPGM 0351    %0:vreg_64_align2 = COPY $vgpr0_vgpr1352    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec353    %2:vreg_64_align2 = COPY %1354    %3:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec355    $vgpr0_vgpr1 = COPY %3356    S_ENDPGM 0357 358...359 360---361name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub0_to_f32_use362tracksRegLiveness: true363body:             |364  bb.0:365  liveins: $vgpr0366    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub0_to_f32_use367    ; GCN: liveins: $vgpr0368    ; GCN-NEXT: {{  $}}369    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0370    ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec371    ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]372    ; GCN-NEXT: S_ENDPGM 0373    %0:vgpr_32 = COPY $vgpr0374    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec375    %2:vgpr_32 = COPY %1.sub0376    %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec377    $vgpr0 = COPY %3378    S_ENDPGM 0379 380...381 382---383name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub1_to_f32_use384tracksRegLiveness: true385body:             |386  bb.0:387  liveins: $vgpr0388    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp32_1_splat_copy_extract_sub1_to_f32_use389    ; GCN: liveins: $vgpr0390    ; GCN-NEXT: {{  $}}391    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0392    ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 1065353216, 0, 0, implicit $mode, implicit $exec393    ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]394    ; GCN-NEXT: S_ENDPGM 0395    %0:vgpr_32 = COPY $vgpr0396    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4575657222473777152, implicit $exec397    %2:vgpr_32 = COPY %1.sub1398    %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec399    $vgpr0 = COPY %3400    S_ENDPGM 0401 402...403 404---405name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub0_to_f32_use406tracksRegLiveness: true407body:             |408  bb.0:409  liveins: $vgpr0410    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub0_to_f32_use411    ; GCN: liveins: $vgpr0412    ; GCN-NEXT: {{  $}}413    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0414    ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, 0, 0, 0, implicit $mode, implicit $exec415    ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]416    ; GCN-NEXT: S_ENDPGM 0417    %0:vgpr_32 = COPY $vgpr0418    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec419    %2:vgpr_32 = COPY %1.sub0420    %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec421    $vgpr0 = COPY %3422    S_ENDPGM 0423 424...425 426---427name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub1_to_f32_use428tracksRegLiveness: true429body:             |430  bb.0:431  liveins: $vgpr0432    ; GCN-LABEL: name: v_mov_b64_pseudo_imm_fp64_1_copy_extract_sub1_to_f32_use433    ; GCN: liveins: $vgpr0434    ; GCN-NEXT: {{  $}}435    ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0436    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec437    ; GCN-NEXT: [[V_ADD_F32_e64_:%[0-9]+]]:vgpr_32 = nofpexcept V_ADD_F32_e64 0, [[COPY]], 1, [[V_MOV_B32_e32_]], 0, 0, implicit $mode, implicit $exec438    ; GCN-NEXT: $vgpr0 = COPY [[V_ADD_F32_e64_]]439    ; GCN-NEXT: S_ENDPGM 0440    %0:vgpr_32 = COPY $vgpr0441    %1:vreg_64_align2 = V_MOV_B64_PSEUDO 4607182418800017408, implicit $exec442    %2:vgpr_32 = COPY %1.sub1443    %3:vgpr_32 = nofpexcept V_ADD_F32_e64 0, %0, 1, %2, 0, 0, implicit $mode, implicit $exec444    $vgpr0 = COPY %3445    S_ENDPGM 0446 447...448 449---450name: reg_sequence_3x_0_f64_use451tracksRegLiveness: true452body:             |453  bb.0:454  liveins: $vgpr0_vgpr1455 456    ; GCN-LABEL: name: reg_sequence_3x_0_f64_use457    ; GCN: liveins: $vgpr0_vgpr1458    ; GCN-NEXT: {{  $}}459    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1460    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec461    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec462    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec463    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_2]], %subreg.sub2464    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, 0, 0, 0, implicit $mode, implicit $exec465    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]466    ; GCN-NEXT: S_ENDPGM 0467    %0:vreg_64_align2 = COPY $vgpr0_vgpr1468    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec469    %2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec470    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec471    %4:vreg_96_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2472    %5:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %4.sub0_sub1, 0, 0, implicit $mode, implicit $exec473    $vgpr0_vgpr1 = COPY %5474    S_ENDPGM 0475 476...477 478---479name: reg_sequence_3x_neg1_f64_use480tracksRegLiveness: true481body:             |482  bb.0:483  liveins: $vgpr0_vgpr1484 485    ; GCN-LABEL: name: reg_sequence_3x_neg1_f64_use486    ; GCN: liveins: $vgpr0_vgpr1487    ; GCN-NEXT: {{  $}}488    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1489    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec490    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec491    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec492    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_2]], %subreg.sub2493    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, -1, 0, 0, implicit $mode, implicit $exec494    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]495    ; GCN-NEXT: S_ENDPGM 0496    %0:vreg_64_align2 = COPY $vgpr0_vgpr1497    %1:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec498    %2:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec499    %3:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec500    %4:vreg_96_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2501    %5:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %4.sub0_sub1, 0, 0, implicit $mode, implicit $exec502    $vgpr0_vgpr1 = COPY %5503    S_ENDPGM 0504 505...506 507---508name: reg_sequence_3x_1_f64_use509tracksRegLiveness: true510body:             |511  bb.0:512  liveins: $vgpr0_vgpr1513 514    ; GCN-LABEL: name: reg_sequence_3x_1_f64_use515    ; GCN: liveins: $vgpr0_vgpr1516    ; GCN-NEXT: {{  $}}517    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1518    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec519    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec520    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec521    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_2]], %subreg.sub2522    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec523    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]524    ; GCN-NEXT: S_ENDPGM 0525    %0:vreg_64_align2 = COPY $vgpr0_vgpr1526    %1:vgpr_32 = V_MOV_B32_e32 1, implicit $exec527    %2:vgpr_32 = V_MOV_B32_e32 1, implicit $exec528    %3:vgpr_32 = V_MOV_B32_e32 1, implicit $exec529    %4:vreg_96_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2530    %5:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %4.sub0_sub1, 0, 0, implicit $mode, implicit $exec531    $vgpr0_vgpr1 = COPY %5532    S_ENDPGM 0533 534...535 536---537name: reg_sequence_0_0_1_f64_use538tracksRegLiveness: true539body:             |540  bb.0:541  liveins: $vgpr0_vgpr1542 543    ; GCN-LABEL: name: reg_sequence_0_0_1_f64_use544    ; GCN: liveins: $vgpr0_vgpr1545    ; GCN-NEXT: {{  $}}546    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1547    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec548    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec549    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1, implicit $exec550    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_2]], %subreg.sub2551    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec552    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]553    ; GCN-NEXT: S_ENDPGM 0554    %0:vreg_64_align2 = COPY $vgpr0_vgpr1555    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec556    %2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec557    %3:vgpr_32 = V_MOV_B32_e32 1, implicit $exec558    %4:vreg_96_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2559    %5:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %4.sub0_sub1, 0, 0, implicit $mode, implicit $exec560    $vgpr0_vgpr1 = COPY %5561    S_ENDPGM 0562 563...564 565---566name: reg_sequence_neg1_neg1_0_f64_use567tracksRegLiveness: true568body:             |569  bb.0:570  liveins: $vgpr0_vgpr1571 572    ; GCN-LABEL: name: reg_sequence_neg1_neg1_0_f64_use573    ; GCN: liveins: $vgpr0_vgpr1574    ; GCN-NEXT: {{  $}}575    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1576    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec577    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec578    ; GCN-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec579    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_2]], %subreg.sub2580    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec581    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]582    ; GCN-NEXT: S_ENDPGM 0583    %0:vreg_64_align2 = COPY $vgpr0_vgpr1584    %1:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec585    %2:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec586    %3:vgpr_32 = V_MOV_B32_e32 0, implicit $exec587    %4:vreg_96_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %3, %subreg.sub2588    %5:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %4.sub0_sub1, 0, 0, implicit $mode, implicit $exec589    $vgpr0_vgpr1 = COPY %5590    S_ENDPGM 0591 592...593 594---595name: reg_sequence_split_f64_1_use596tracksRegLiveness: true597body:             |598  bb.0:599  liveins: $vgpr0_vgpr1600 601    ; GCN-LABEL: name: reg_sequence_split_f64_1_use602    ; GCN: liveins: $vgpr0_vgpr1603    ; GCN-NEXT: {{  $}}604    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1605    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec606    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec607    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1608    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]], 0, 0, implicit $mode, implicit $exec609    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]610    ; GCN-NEXT: S_ENDPGM 0611    %0:vreg_64_align2 = COPY $vgpr0_vgpr1612    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec613    %2:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec614    %3:vreg_64_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1615    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3, 0, 0, implicit $mode, implicit $exec616    $vgpr0_vgpr1 = COPY %4617    S_ENDPGM 0618 619...620 621---622name: reg_sequence_split_f64_1_use_wrong_order623tracksRegLiveness: true624body:             |625  bb.0:626  liveins: $vgpr0_vgpr1627 628    ; GCN-LABEL: name: reg_sequence_split_f64_1_use_wrong_order629    ; GCN: liveins: $vgpr0_vgpr1630    ; GCN-NEXT: {{  $}}631    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1632    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec633    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec634    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1635    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]], 0, 0, implicit $mode, implicit $exec636    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]637    ; GCN-NEXT: S_ENDPGM 0638    %0:vreg_64_align2 = COPY $vgpr0_vgpr1639    %1:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec640    %2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec641    %3:vreg_64_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1642    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3, 0, 0, implicit $mode, implicit $exec643    $vgpr0_vgpr1 = COPY %4644    S_ENDPGM 0645 646...647 648---649name: reg_sequence_split_f64_1_use_backwards_sequence650tracksRegLiveness: true651body:             |652  bb.0:653  liveins: $vgpr0_vgpr1654 655    ; GCN-LABEL: name: reg_sequence_split_f64_1_use_backwards_sequence656    ; GCN: liveins: $vgpr0_vgpr1657    ; GCN-NEXT: {{  $}}658    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1659    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec660    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec661    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_]], %subreg.sub0662    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]], 0, 0, implicit $mode, implicit $exec663    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]664    ; GCN-NEXT: S_ENDPGM 0665    %0:vreg_64_align2 = COPY $vgpr0_vgpr1666    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec667    %2:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec668    %3:vreg_64_align2 = REG_SEQUENCE %2, %subreg.sub1, %1, %subreg.sub0669    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3, 0, 0, implicit $mode, implicit $exec670    $vgpr0_vgpr1 = COPY %4671    S_ENDPGM 0672 673...674 675---676name: reg_sequence_split_x2_f64_1_use_0677tracksRegLiveness: true678body:             |679  bb.0:680  liveins: $vgpr0_vgpr1681 682    ; GCN-LABEL: name: reg_sequence_split_x2_f64_1_use_0683    ; GCN: liveins: $vgpr0_vgpr1684    ; GCN-NEXT: {{  $}}685    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1686    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec687    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec688    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_]], %subreg.sub2, [[V_MOV_B32_e32_1]], %subreg.sub3689    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec690    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]691    ; GCN-NEXT: S_ENDPGM 0692    %0:vreg_64_align2 = COPY $vgpr0_vgpr1693    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec694    %2:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec695    %3:vreg_128_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2, %2, %subreg.sub3696    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3.sub0_sub1, 0, 0, implicit $mode, implicit $exec697    $vgpr0_vgpr1 = COPY %4698    S_ENDPGM 0699 700...701 702---703name: reg_sequence_split_x2_f64_1_use_1704tracksRegLiveness: true705body:             |706  bb.0:707  liveins: $vgpr0_vgpr1708 709    ; GCN-LABEL: name: reg_sequence_split_x2_f64_1_use_1710    ; GCN: liveins: $vgpr0_vgpr1711    ; GCN-NEXT: {{  $}}712    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1713    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec714    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec715    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_]], %subreg.sub2, [[V_MOV_B32_e32_1]], %subreg.sub3716    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub1_sub2, 0, 0, implicit $mode, implicit $exec717    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]718    ; GCN-NEXT: S_ENDPGM 0719    %0:vreg_64_align2 = COPY $vgpr0_vgpr1720    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec721    %2:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec722    %3:vreg_128_align2 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2, %2, %subreg.sub3723    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3.sub1_sub2, 0, 0, implicit $mode, implicit $exec724    $vgpr0_vgpr1 = COPY %4725    S_ENDPGM 0726 727...728 729---730name: reg_sequence_split_x2_f64_1_use_0_sgpr731tracksRegLiveness: true732body:             |733  bb.0:734  liveins: $vgpr0_vgpr1735 736    ; GCN-LABEL: name: reg_sequence_split_x2_f64_1_use_0_sgpr737    ; GCN: liveins: $vgpr0_vgpr1738    ; GCN-NEXT: {{  $}}739    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1740    ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0741    ; GCN-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 1072693248742    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[S_MOV_B32_]], %subreg.sub0, [[S_MOV_B32_1]], %subreg.sub1, [[S_MOV_B32_]], %subreg.sub2, [[S_MOV_B32_1]], %subreg.sub3743    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec744    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]745    ; GCN-NEXT: S_ENDPGM 0746    %0:vreg_64_align2 = COPY $vgpr0_vgpr1747    %1:sreg_32 = S_MOV_B32 0748    %2:sreg_32 = S_MOV_B32 1072693248749    %3:sgpr_128 = REG_SEQUENCE %1, %subreg.sub0, %2, %subreg.sub1, %1, %subreg.sub2, %2, %subreg.sub3750    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3.sub0_sub1, 0, 0, implicit $mode, implicit $exec751    $vgpr0_vgpr1 = COPY %4752    S_ENDPGM 0753 754...755 756---757name: reg_sequence_split_x2_f64_1_use_nonconsecutive_reg_sequence758tracksRegLiveness: true759body:             |760  bb.0:761  liveins: $vgpr0_vgpr1762 763    ; GCN-LABEL: name: reg_sequence_split_x2_f64_1_use_nonconsecutive_reg_sequence764    ; GCN: liveins: $vgpr0_vgpr1765    ; GCN-NEXT: {{  $}}766    ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY $vgpr0_vgpr1767    ; GCN-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec768    ; GCN-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec769    ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128_align2 = REG_SEQUENCE [[V_MOV_B32_e32_]], %subreg.sub0, [[V_MOV_B32_e32_]], %subreg.sub2, [[V_MOV_B32_e32_1]], %subreg.sub1, [[V_MOV_B32_e32_1]], %subreg.sub3770    ; GCN-NEXT: [[V_ADD_F64_e64_:%[0-9]+]]:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, [[COPY]], 1, [[REG_SEQUENCE]].sub0_sub1, 0, 0, implicit $mode, implicit $exec771    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[V_ADD_F64_e64_]]772    ; GCN-NEXT: S_ENDPGM 0773    %0:vreg_64_align2 = COPY $vgpr0_vgpr1774    %1:vgpr_32 = V_MOV_B32_e32 0, implicit $exec775    %2:vgpr_32 = V_MOV_B32_e32 1072693248, implicit $exec776    %3:vreg_128_align2 = REG_SEQUENCE %1, %subreg.sub0, %1, %subreg.sub2, %2, %subreg.sub1, %2, %subreg.sub3777    %4:vreg_64_align2 = nofpexcept V_ADD_F64_e64 0, %0, 1, %3.sub0_sub1, 0, 0, implicit $mode, implicit $exec778    $vgpr0_vgpr1 = COPY %4779    S_ENDPGM 0780 781...782 783---784name: av_mov_b64_imm_pseudo_copy_av_64_to_physreg_agpr785tracksRegLiveness: true786body:             |787  bb.0:788    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_physreg_agpr789    ; GCN: [[AV_MOV_:%[0-9]+]]:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec790    ; GCN-NEXT: $agpr0_agpr1 = COPY [[AV_MOV_]]791    ; GCN-NEXT: S_ENDPGM 0, implicit $agpr0_agpr1792    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec793    $agpr0_agpr1 = COPY %0794    S_ENDPGM 0, implicit $agpr0_agpr1795 796...797 798---799name: av_mov_b64_imm_pseudo_copy_av_64_to_physreg_vgpr800tracksRegLiveness: true801body:             |802  bb.0:803    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_physreg_vgpr804    ; GCN: [[AV_MOV_:%[0-9]+]]:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec805    ; GCN-NEXT: $vgpr0_vgpr1 = COPY [[AV_MOV_]]806    ; GCN-NEXT: S_ENDPGM 0, implicit $vgpr0_vgpr1807    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec808    $vgpr0_vgpr1 = COPY %0809    S_ENDPGM 0, implicit $vgpr0_vgpr1810 811...812 813---814name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_agpr815tracksRegLiveness: true816body:             |817  bb.0:818    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_agpr819    ; GCN: [[AV_MOV_:%[0-9]+]]:areg_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec820    ; GCN-NEXT: S_ENDPGM 0, implicit [[AV_MOV_]]821    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec822    %1:areg_64 = COPY %0823    S_ENDPGM 0, implicit %1824 825...826 827# Splat value across 2 halves of register828---829name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_0830tracksRegLiveness: true831body:             |832  bb.0:833    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_0834    ; GCN: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 0, implicit $exec835    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_MOV_B]]836    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 0, implicit $exec837    %1:vreg_64 = COPY %0838    S_ENDPGM 0, implicit %1839 840...841 842# Low and hi are different inline constants843---844name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value845tracksRegLiveness: true846body:             |847  bb.0:848    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value849    ; GCN: [[AV_MOV_:%[0-9]+]]:vreg_64 = AV_MOV_B64_IMM_PSEUDO 274877906961, implicit $exec850    ; GCN-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO [[AV_MOV_]], implicit $exec851    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_MOV_B]]852    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 274877906961, implicit $exec853    %1:vreg_64 = COPY %0854    S_ENDPGM 0, implicit %1855 856...857 858---859name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value_copy_sub0860tracksRegLiveness: true861body:             |862  bb.0:863    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value_copy_sub0864    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 17, implicit $exec865    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_MOV_B32_e32_]]866    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 274877906961, implicit $exec867    %1:vgpr_32 = COPY %0.sub0868    S_ENDPGM 0, implicit %1869 870...871 872---873name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value_copy_sub1874tracksRegLiveness: true875body:             |876  bb.0:877    ; GCN-LABEL: name: av_mov_b64_imm_pseudo_copy_av_64_to_virtreg_vgpr_nonsplat_value_copy_sub1878    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 64, implicit $exec879    ; GCN-NEXT: S_ENDPGM 0, implicit [[V_MOV_B32_e32_]]880    %0:av_64 = AV_MOV_B64_IMM_PSEUDO 274877906961, implicit $exec881    %1:vgpr_32 = COPY %0.sub1882    S_ENDPGM 0, implicit %1883 884...885