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